Recherche avancée

Médias (0)

Mot : - Tags -/page unique

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (74)

  • Contribute to documentation

    13 avril 2011

    Documentation is vital to the development of improved technical capabilities.
    MediaSPIP welcomes documentation by users as well as developers - including : critique of existing features and functions articles contributed by developers, administrators, content producers and editors screenshots to illustrate the above translations of existing documentation into other languages
    To contribute, register to the project users’ mailing (...)

  • Submit bugs and patches

    13 avril 2011

    Unfortunately a software is never perfect.
    If you think you have found a bug, report it using our ticket system. Please to help us to fix it by providing the following information : the browser you are using, including the exact version as precise an explanation as possible of the problem if possible, the steps taken resulting in the problem a link to the site / page in question
    If you think you have solved the bug, fill in a ticket and attach to it a corrective patch.
    You may also (...)

  • Selection of projects using MediaSPIP

    2 mai 2011, par

    The examples below are representative elements of MediaSPIP specific uses for specific projects.
    MediaSPIP farm @ Infini
    The non profit organizationInfini develops hospitality activities, internet access point, training, realizing innovative projects in the field of information and communication technologies and Communication, and hosting of websites. It plays a unique and prominent role in the Brest (France) area, at the national level, among the half-dozen such association. Its members (...)

Sur d’autres sites (6771)

  • What is Multi-Touch Attribution ? (And How To Get Started)

    2 février 2023, par Erin — Analytics Tips

    Good marketing thrives on data. Or more precisely — its interpretation. Using modern analytics software, we can determine which marketing actions steer prospects towards the desired action (a conversion event). 

    An attribution model in marketing is a set of rules that determine how various marketing tactics and channels impact the visitor’s progress towards a conversion. 

    Yet, as customer journeys become more complicated and involve multiple “touches”, standard marketing reports no longer tell the full picture. 

    That’s when multi-touch attribution analysis comes to the fore. 

    What is Multi-Touch Attribution ?

    Multi-touch attribution (also known as multi-channel attribution or cross-channel attribution) measures the impact of all touchpoints on the consumer journey on conversion. 

    Unlike single-touch reporting, multi-touch attribution models give credit to each marketing element — a social media ad, an on-site banner, an email link click, etc. By seeing impacts from every touchpoint and channel, marketers can avoid false assumptions or subpar budget allocations.

    To better understand the concept, let’s interpret the same customer journey using a standard single-touch report vs a multi-touch attribution model. 

    Picture this : Jammie is shopping around for a privacy-centred web analytics solution. She saw a recommendation on Twitter and ended up on the Matomo website. After browsing a few product pages and checking comparisons with other web analytics tools, she signs up for a webinar. One week after attending, Jammie is convinced that Matomo is the right tool for her business and goes directly to the Matomo website a starts a free trial. 

    • A standard single-touch report would attribute 100% of the conversion to direct traffic, which doesn’t give an accurate view of the multiple touchpoints that led Jammie to start a free trial. 
    • A multi-channel attribution report would showcase all the channels involved in the free trial conversion — social media, website content, the webinar, and then the direct traffic source.

    In other words : Multi-touch attribution helps you understand how prospects move through the sales funnel and which elements tinder them towards the desired outcome. 

    Types of Attribution Models

    As marketers, we know that multiple factors play into a conversion — channel type, timing, user’s stage on the buyer journey and so on. Various attribution models exist to reflect this variability. 

    Types of Attribution Models

    First Interaction attribution model (otherwise known as first touch) gives all credit for the conversion to the first channel (for example — a referral link) and doesn’t report on all the other interactions a user had with your company (e.g., clicked a newsletter link, engaged with a landing page, or browsed the blog campaign).

    First-touch helps optimise the top of your funnel and establish which channels bring the best leads. However, it doesn’t offer any insight into other factors that persuaded a user to convert. 

    Last Interaction attribution model (also known as last touch) allocates 100% credit to the last channel before conversion — be it direct traffic, paid ad, or an internal product page.

    The data is useful for optimising the bottom-of-the-funnel (BoFU) elements. But you have no visibility into assisted conversions — interactions a user had prior to conversion. 

    Last Non-Direct attribution model model excludes direct traffic and assigns 100% credit for a conversion to the last channel a user interacted with before converting. For instance, a social media post will receive 100% of credit if a shopper buys a product three days later. 

    This model is more telling about the other channels, involved in the sales process. Yet, you’re seeing only one step backwards, which may not be sufficient for companies with longer sales cycles.

    Linear attribution model distributes an equal credit for a conversion between all tracked touchpoints.

    For instance, with a four touchpoint conversion (e.g., an organic visit, then a direct visit, then a social visit, then a visit and conversion from an ad campaign) each touchpoint would receive 25% credit for that single conversion.

    This is the simplest multi-channel attribution modelling technique many tools support. The nuance is that linear models don’t reflect the true impact of various events. After all, a paid ad that introduced your brand to the shopper and a time-sensitive discount code at the checkout page probably did more than the blog content a shopper browsed in between. 

    Position Based attribution model allocates a 40% credit to the first and the last touchpoints and then spreads the remaining 20% across the touchpoints between the first and last. 

    This attribution model comes in handy for optimising conversions across the top and the bottom of the funnel. But it doesn’t provide much insight into the middle, which can skew your decision-making. For instance, you may overlook cases when a shopper landed via a social media post, then was re-engaged via email, and proceeded to checkout after an organic visit. Without email marketing, that sale may not have happened.

    Time decay attribution model adjusts the credit, based on the timing of the interactions. Touchpoints that preceded the conversion get the highest score, while the first ones get less weight (e.g., 5%-5%-10%-15%-25%-30%).

    This multi-channel attribution model works great for tracking the bottom of the funnel, but it underestimates the impact of brand awareness campaigns or assisted conversions at mid-stage. 

    Why Use Multi-Touch Attribution Modelling

    Multi-touch attribution provides you with the full picture of your funnel. With accurate data across all touchpoints, you can employ targeted conversion rate optimisation (CRO) strategies to maximise the impact of each campaign. 

    Most marketers and analysts prefer using multi-touch attribution modelling — and for some good reasons.

    Issues multi-touch attribution solves 

    • Funnel visibility. Understand which tactics play an important role at the top, middle and bottom of your funnel, instead of second-guessing what’s working or not. 
    • Budget allocations. Spend money on channels and tactics that bring a positive return on investment (ROI). 
    • Assisted conversions. Learn how different elements and touchpoints cumulatively contribute to the ultimate goal — a conversion event — to optimise accordingly. 
    • Channel segmentation. Determine which assets drive the most qualified and engaged leads to replicate them at scale.
    • Campaign benchmarking. Compare how different marketing activities from affiliate marketing to social media perform against the same metrics.

    How To Get Started With Multi-Touch Attribution 

    To make multi-touch attribution part of your analytics setup, follow the next steps :

    1. Define Your Marketing Objectives 

    Multi-touch attribution helps you better understand what led people to convert on your site. But to capture that, you need to first map the standard purchase journeys, which include a series of touchpoints — instances, when a prospect forms an opinion about your business.

    Touchpoints include :

    • On-site interactions (e.g., reading a blog post, browsing product pages, using an on-site calculator, etc.)
    • Off-site interactions (e.g., reading a review, clicking a social media link, interacting with an ad, etc.)

    Combined these interactions make up your sales funnel — a designated path you’ve set up to lead people toward the desired action (aka a conversion). 

    Depending on your business model, you can count any of the following as a conversion :

    • Purchase 
    • Account registration 
    • Free trial request 
    • Contact form submission 
    • Online reservation 
    • Demo call request 
    • Newsletter subscription

    So your first task is to create a set of conversion objectives for your business and add them as Goals or Conversions in your web analytics solution. Then brainstorm how various touchpoints contribute to these objectives. 

    Web analytics tools with multi-channel attribution, like Matomo, allow you to obtain an extra dimension of data on touchpoints via Tracked Events. Using Event Tracking, you can analyse how many people started doing a desired action (e.g., typing details into the form) but never completed the task. This way you can quickly identify “leaking” touchpoints in your funnel and fix them. 

    2. Select an Attribution Model 

    Multi-attribution models have inherent tradeoffs. Linear attribution model doesn’t always represent the role and importance of each channel. Position-based attribution model emphasises the role of the last and first channel while diminishing the importance of assisted conversions. Time-decay model, on the contrary, downplays the role awareness-related campaigns played.

    To select the right attribution model for your business consider your objectives. Is it more important for you to understand your best top of funnel channels to optimise customer acquisition costs (CAC) ? Or would you rather maximise your on-site conversion rates ? 

    Your industry and the average cycle length should also guide your choice. Position-based models can work best for eCommerce and SaaS businesses where both CAC and on-site conversion rates play an important role. Manufacturing companies or educational services providers, on the contrary, will benefit more from a time-decay model as it better represents the lengthy sales cycles. 

    3. Collect and Organise Data From All Touchpoints 

    Multi-touch attribution models are based on available funnel data. So to get started, you will need to determine which data sources you have and how to best leverage them for attribution modelling. 

    Types of data you should collect : 

    • General web analytics data : Insights on visitors’ on-site actions — visited pages, clicked links, form submissions and more.
    • Goals (Conversions) : Reports on successful conversions across different types of assets. 
    • Behavioural user data : Some tools also offer advanced features such as heatmaps, session recording and A/B tests. These too provide ample data into user behaviours, which you can use to map and optimise various touchpoints.

    You can also implement extra tracking, for instance for contact form submissions, live chat contacts or email marketing campaigns to identify repeat users in your system. Just remember to stay on the good side of data protection laws and respect your visitors’ privacy. 

    Separately, you can obtain top-of-the-funnel data by analysing referral traffic sources (channel, campaign type, used keyword, etc). A Tag Manager comes in handy as it allows you to zoom in on particular assets (e.g., a newsletter, an affiliate, a social campaign, etc). 

    Combined, these data points can be parsed by an app, supporting multi-touch attribution (or a custom algorithm) and reported back to you as specific findings. 

    Sounds easy, right ? Well, the devil is in the details. Getting ample, accurate data for multi-touch attribution modelling isn’t easy. 

    Marketing analytics has an accuracy problem, mainly for two reasons :

    • Cookie consent banner rejection 
    • Data sampling application

    Please note that we are not able to provide legal advice, so it’s important that you consult with your own DPO to ensure compliance with all relevant laws and regulations.

    If you’re collecting web analytics in the EU, you know that showing a cookie consent banner is a GDPR must-do. But many consumers don’t often rush to accept cookie consent banners. The average consent rate for cookies in 2021 stood at 54% in Italy, 45% in France, and 44% in Germany. The consent rates are likely lower in 2023, as Google was forced to roll out a “reject all” button for cookie tracking in Europe, while privacy organisations lodge complaints against individual businesses for deceptive banners. 

    For marketers, cookie rejection means substantial gaps in analytics data. The good news is that you can fill in those gaps by using a privacy-centred web analytics tool like Matomo. 

    Matomo takes extra safeguards to protect user privacy and supports fully cookieless tracking. Because of that, Matomo is legally exempt from tracking consent in France. Plus, you can configure to use our analytics tool without consent banners in other markets outside of Germany and the UK. This way you get to retain the data you need for audience modelling without breaching any privacy regulations. 

    Data sampling application partially stems from the above. When a web analytics or multi-channel attribution tool cannot secure first-hand data, the “guessing game” begins. Google Analytics, as well as other tools, often rely on synthetic AI-generated data to fill in the reporting gaps. Respectively, your multi-attribution model doesn’t depict the real state of affairs. Instead, it shows AI-produced guesstimates of what transpired whenever not enough real-world evidence is available.

    4. Evaluate and Select an Attribution Tool 

    Google Analytics (GA) offers several multi-touch attribution models for free (linear, time-decay and position-based). The disadvantage of GA multi-touch attribution is its lower accuracy due to cookie rejection and data sampling application.

    At the same time, you cannot create custom credit allocations for the proposed models, unless you have the paid version of GA, Google Analytics 360. This version of GA comes with a custom Attribution Modeling Tool (AMT). The price tag, however, starts at USD $50,000 per year. 

    Matomo Cloud offers multi-channel conversion attribution as a feature and it is available as a plug-in on the marketplace for Matomo On-Premise. We support linear, position-based, first-interaction, last-interaction, last non-direct and time-decay modelling, based fully on first-hand data. You also get more precise insights because cookie consent isn’t an issue with us. 

    Most multi-channel attribution tools, like Google Analytics and Matomo, provide out-of-the-box multi-touch attribution models. But other tools, like Matomo On-Premise, also provide full access to raw data so you can develop your own multi-touch attribution models and do custom attribution analysis. The ability to create custom attribution analysis is particularly beneficial for data analysts or organisations with complex and unique buyer journeys. 

    Conclusion

    Ultimately, multi-channel attribution gives marketers greater visibility into the customer journey. By analysing multiple touchpoints, you can establish how various marketing efforts contribute to conversions. Then use this information to inform your promotional strategy, budget allocations and CRO efforts. 

    The key to benefiting the most from multi-touch attribution is accurate data. If your analytics solution isn’t telling you the full story, your multi-touch model won’t either. 

    Collect accurate visitor data for multi-touch attribution modelling with Matomo. Start your free 21-day trial now

  • cannot convert FLV to MP4 despite compiling ffmpeg with all codecs

    1er novembre 2013, par Rubytastic

    Try to convert FLV to MP4 with below params, but it always fails. I included also list of codeces that are compiled in. Why It will not convert the FLV to MP4, who knows ?

    ffmpeg -y -i stream2.flv -acodec libmp3lame -ar 44100 -ac 1 -vcodec libx264 stream2.mp4;
    ffmpeg version git-2013-11-01-64a0ed1 Copyright (c) 2000-2013 the FFmpeg developers
     built on Nov  1 2013 14:44:29 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-3)
     configuration: --prefix=/root/ffmpeg_build --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --bindir=/root/bin --extra-libs=-ldl --enable-gpl --enable-nonfree --enable-libfdk_aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264
     libavutil      52. 49.100 / 52. 49.100
     libavcodec     55. 40.100 / 55. 40.100
     libavformat    55. 20.100 / 55. 20.100
     libavdevice    55.  5.100 / 55.  5.100
     libavfilter     3. 90.100 /  3. 90.100
     libswscale      2.  5.101 /  2.  5.101
     libswresample   0. 17.104 /  0. 17.104
     libpostproc    52.  3.100 / 52.  3.100
    Input #0, flv, from 'stream2.flv':
     Duration: 00:00:01.60, start: 0.000000, bitrate: 636 kb/s
       Stream #0:0: Video: h264 (Baseline), yuv420p(tv), 640x480 [SAR 1:1 DAR 4:3], 11.92 tbr, 1k tbn, 60 tbc
       Stream #0:1: Audio: speex, 16000 Hz, mono
    [graph 1 input from stream 0:1 @ 0xb000d40] Invalid sample format (null)
    Error opening filters!

    i followed the official compile documentation with all the codes, this is my full codec list :

    ffmpeg version git-2013-11-01-64a0ed1 Copyright (c) 2000-2013 the FFmpeg developers
     built on Nov  1 2013 14:44:29 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-3)
     configuration: --prefix=/root/ffmpeg_build --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --bindir=/root/bin --extra-libs=-ldl --enable-gpl --enable-nonfree --enable-libfdk_aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264
     libavutil      52. 49.100 / 52. 49.100
     libavcodec     55. 40.100 / 55. 40.100
     libavformat    55. 20.100 / 55. 20.100
     libavdevice    55.  5.100 / 55.  5.100
     libavfilter     3. 90.100 /  3. 90.100
     libswscale      2.  5.101 /  2.  5.101
     libswresample   0. 17.104 /  0. 17.104
     libpostproc    52.  3.100 / 52.  3.100
    Codecs:
    D..... = Decoding supported
    .E.... = Encoding supported
    ..V... = Video codec
    ..A... = Audio codec
    ..S... = Subtitle codec
    ...I.. = Intra frame-only codec
    ....L. = Lossy compression
    .....S = Lossless compression
    -------
    D.VI.. 012v                 Uncompressed 4:2:2 10-bit
    D.V.L. 4xm                  4X Movie
    D.VI.S 8bps                 QuickTime 8BPS video
    .EVIL. a64_multi            Multicolor charset for Commodore 64 (encoders: a64multi )
    .EVIL. a64_multi5           Multicolor charset for Commodore 64, extended with 5th color (colram) (encoders: a64multi5 )
    D.V..S aasc                 Autodesk RLE
    D.VIL. aic                  Apple Intermediate Codec
    DEVIL. amv                  AMV Video
    D.V.L. anm                  Deluxe Paint Animation
    D.V.L. ansi                 ASCII/ANSI art
    DEVIL. asv1                 ASUS V1
    DEVIL. asv2                 ASUS V2
    D.VIL. aura                 Auravision AURA
    D.VIL. aura2                Auravision Aura 2
    D.V... avrn                 Avid AVI Codec
    DEVI.. avrp                 Avid 1:1 10-bit RGB Packer
    D.V.L. avs                  AVS (Audio Video Standard) video
    DEVI.. avui                 Avid Meridien Uncompressed
    DEVI.. ayuv                 Uncompressed packed MS 4:4:4:4
    D.V.L. bethsoftvid          Bethesda VID video
    D.V.L. bfi                  Brute Force & Ignorance
    D.V.L. binkvideo            Bink video
    D.VI.. bintext              Binary text
    DEVI.S bmp                  BMP (Windows and OS/2 bitmap)
    D.V..S bmv_video            Discworld II BMV video
    D.VI.S brender_pix          BRender PIX image
    D.V.L. c93                  Interplay C93
    D.V.L. cavs                 Chinese AVS (Audio Video Standard) (AVS1-P2, JiZhun profile)
    D.V.L. cdgraphics           CD Graphics video
    D.VIL. cdxl                 Commodore CDXL video
    D.V.L. cinepak              Cinepak
    DEVIL. cljr                 Cirrus Logic AccuPak
    D.VI.S cllc                 Canopus Lossless Codec
    D.V.L. cmv                  Electronic Arts CMV video (decoders: eacmv )
    D.V... cpia                 CPiA video format
    D.V..S cscd                 CamStudio (decoders: camstudio )
    D.VIL. cyuv                 Creative YUV (CYUV)
    D.V.L. dfa                  Chronomaster DFA
    D.V.LS dirac                Dirac
    DEVIL. dnxhd                VC3/DNxHD
    DEVI.S dpx                  DPX (Digital Picture Exchange) image
    D.V.L. dsicinvideo          Delphine Software International CIN video
    DEVIL. dvvideo              DV (Digital Video)
    D.V..S dxa                  Feeble Files/ScummVM DXA
    D.VI.S dxtory               Dxtory
    D.V.L. escape124            Escape 124
    D.V.L. escape130            Escape 130
    D.VILS exr                  OpenEXR image
    DEV..S ffv1                 FFmpeg video codec #1
    DEVI.S ffvhuff              Huffyuv FFmpeg variant
    DEV..S flashsv              Flash Screen Video v1
    DEV.L. flashsv2             Flash Screen Video v2
    D.V..S flic                 Autodesk Animator Flic video
    DEV.L. flv1                 FLV / Sorenson Spark / Sorenson H.263 (Flash Video) (decoders: flv ) (encoders: flv )
    D.V..S fraps                Fraps
    D.VI.S frwu                 Forward Uncompressed
    D.V.L. g2m                  Go2Meeting
    DEV..S gif                  GIF (Graphics Interchange Format)
    DEV.L. h261                 H.261
    DEV.L. h263                 H.263 / H.263-1996, H.263+ / H.263-1998 / H.263 version 2
    D.V.L. h263i                Intel H.263
    DEV.L. h263p                H.263+ / H.263-1998 / H.263 version 2
    DEV.LS h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (encoders: libx264 libx264rgb )
    D.V.LS hevc                 H.265 / HEVC
    D.V.L. hnm4video            HNM 4 video
    DEVI.S huffyuv              HuffYUV
    D.V.L. idcin                id Quake II CIN video (decoders: idcinvideo )
    D.VI.. idf                  iCEDraw text
    D.V.L. iff_byterun1         IFF ByteRun1 (decoders: iff )
    D.V.L. iff_ilbm             IFF ILBM (decoders: iff )
    D.V.L. indeo2               Intel Indeo 2
    D.V.L. indeo3               Intel Indeo 3
    D.V.L. indeo4               Intel Indeo Video Interactive 4
    D.V.L. indeo5               Intel Indeo Video Interactive 5
    D.V.L. interplayvideo       Interplay MVE video
    DEVILS jpeg2000             JPEG 2000
    DEVILS jpegls               JPEG-LS
    D.VIL. jv                   Bitmap Brothers JV video
    D.V.L. kgv1                 Kega Game Video
    D.V.L. kmvc                 Karl Morton's video codec
    D.VI.S lagarith             Lagarith lossless
    .EVI.S ljpeg                Lossless JPEG
    D.VI.S loco                 LOCO
    D.V.L. mad                  Electronic Arts Madcow Video (decoders: eamad )
    D.VIL. mdec                 Sony PlayStation MDEC (Motion DECoder)
    D.V.L. mimic                Mimic
    DEVIL. mjpeg                Motion JPEG
    D.VIL. mjpegb               Apple MJPEG-B
    D.V.L. mmvideo              American Laser Games MM Video
    D.V.L. motionpixels         Motion Pixels video
    DEV.L. mpeg1video           MPEG-1 video
    DEV.L. mpeg2video           MPEG-2 video (decoders: mpeg2video mpegvideo )
    DEV.L. mpeg4                MPEG-4 part 2
    ..V.L. mpegvideo_xvmc       MPEG-1/2 video XvMC (X-Video Motion Compensation)
    D.V.L. msa1                 MS ATC Screen
    D.V.L. msmpeg4v1            MPEG-4 part 2 Microsoft variant version 1
    DEV.L. msmpeg4v2            MPEG-4 part 2 Microsoft variant version 2
    DEV.L. msmpeg4v3            MPEG-4 part 2 Microsoft variant version 3 (decoders: msmpeg4 ) (encoders: msmpeg4 )
    D.V..S msrle                Microsoft RLE
    D.V.L. mss1                 MS Screen 1
    D.VIL. mss2                 MS Windows Media Video V9 Screen
    DEV.L. msvideo1             Microsoft Video 1
    D.VI.S mszh                 LCL (LossLess Codec Library) MSZH
    D.V.L. mts2                 MS Expression Encoder Screen
    D.VIL. mvc1                 Silicon Graphics Motion Video Compressor 1
    D.VIL. mvc2                 Silicon Graphics Motion Video Compressor 2
    D.V.L. mxpeg                Mobotix MxPEG video
    D.V.L. nuv                  NuppelVideo/RTJPEG
    D.V.L. paf_video            Amazing Studio Packed Animation File Video
    DEVI.S pam                  PAM (Portable AnyMap) image
    DEVI.S pbm                  PBM (Portable BitMap) image
    DEVI.S pcx                  PC Paintbrush PCX image
    DEVI.S pgm                  PGM (Portable GrayMap) image
    DEVI.S pgmyuv               PGMYUV (Portable GrayMap YUV) image
    D.VIL. pictor               Pictor/PC Paint
    DEV..S png                  PNG (Portable Network Graphics) image
    DEVI.S ppm                  PPM (Portable PixelMap) image
    DEVIL. prores               Apple ProRes (iCodec Pro) (decoders: prores prores_lgpl ) (encoders: prores prores_aw prores_ks )
    D.VIL. ptx                  V.Flash PTX image
    D.VI.S qdraw                Apple QuickDraw
    D.V.L. qpeg                 Q-team QPEG
    DEV..S qtrle                QuickTime Animation (RLE) video
    DEVI.S r10k                 AJA Kona 10-bit RGB Codec
    DEVI.S r210                 Uncompressed RGB 10-bit
    DEVI.S rawvideo             raw video
    D.VIL. rl2                  RL2 video
    DEV.L. roq                  id RoQ video (decoders: roqvideo ) (encoders: roqvideo )
    D.V.L. rpza                 QuickTime video (RPZA)
    DEV.L. rv10                 RealVideo 1.0
    DEV.L. rv20                 RealVideo 2.0
    D.V.L. rv30                 RealVideo 3.0
    D.V.L. rv40                 RealVideo 4.0
    D.V.L. sanm                 LucasArts SMUSH video
    DEVI.S sgi                  SGI image
    D.VI.S sgirle               SGI RLE 8-bit
    D.V.L. smackvideo           Smacker video (decoders: smackvid )
    D.V.L. smc                  QuickTime Graphics (SMC)
    D.V... smv                  Sigmatel Motion Video (decoders: smvjpeg )
    DEV.LS snow                 Snow
    D.VIL. sp5x                 Sunplus JPEG (SP5X)
    DEVI.S sunrast              Sun Rasterfile image
    DEV.L. svq1                 Sorenson Vector Quantizer 1 / Sorenson Video 1 / SVQ1
    D.V.L. svq3                 Sorenson Vector Quantizer 3 / Sorenson Video 3 / SVQ3
    DEVI.S targa                Truevision Targa image
    D.VI.. targa_y216           Pinnacle TARGA CineWave YUV16
    D.V.L. tgq                  Electronic Arts TGQ video (decoders: eatgq )
    D.V.L. tgv                  Electronic Arts TGV video (decoders: eatgv )
    D.V.L. theora               Theora
    D.VIL. thp                  Nintendo Gamecube THP video
    D.V.L. tiertexseqvideo      Tiertex Limited SEQ video
    DEVI.S tiff                 TIFF image
    D.VIL. tmv                  8088flex TMV
    D.V.L. tqi                  Electronic Arts TQI video (decoders: eatqi )
    D.V.L. truemotion1          Duck TrueMotion 1.0
    D.V.L. truemotion2          Duck TrueMotion 2.0
    D.V..S tscc                 TechSmith Screen Capture Codec (decoders: camtasia )
    D.V.L. tscc2                TechSmith Screen Codec 2
    D.VIL. txd                  Renderware TXD (TeXture Dictionary) image
    D.V.L. ulti                 IBM UltiMotion (decoders: ultimotion )
    DEVI.S utvideo              Ut Video
    DEVI.S v210                 Uncompressed 4:2:2 10-bit
    D.VI.S v210x                
    DEVI.. v308                 Uncompressed packed 4:4:4
    DEVI.. v408                 Uncompressed packed QT 4:4:4:4
    DEVI.S v410                 Uncompressed 4:4:4 10-bit
    D.V.L. vb                   Beam Software VB
    D.VI.S vble                 VBLE Lossless Codec
    D.V.L. vc1                  SMPTE VC-1
    D.V.L. vc1image             Windows Media Video 9 Image v2
    D.VIL. vcr1                 ATI VCR1
    D.VIL. vixl                 Miro VideoXL (decoders: xl )
    D.V.L. vmdvideo             Sierra VMD video
    D.V..S vmnc                 VMware Screen Codec / VMware Video
    D.V.L. vp3                  On2 VP3
    D.V.L. vp5                  On2 VP5
    D.V.L. vp6                  On2 VP6
    D.V.L. vp6a                 On2 VP6 (Flash version, with alpha channel)
    D.V.L. vp6f                 On2 VP6 (Flash version)
    DEV.L. vp8                  On2 VP8 (decoders: vp8 libvpx ) (encoders: libvpx )
    DEV.L. vp9                  Google VP9 (decoders: vp9 libvpx-vp9 ) (encoders: libvpx-vp9 )
    D.VILS webp                 WebP
    DEV.L. wmv1                 Windows Media Video 7
    DEV.L. wmv2                 Windows Media Video 8
    D.V.L. wmv3                 Windows Media Video 9
    D.V.L. wmv3image            Windows Media Video 9 Image
    D.VIL. wnv1                 Winnov WNV1
    D.V.L. ws_vqa               Westwood Studios VQA (Vector Quantized Animation) video (decoders: vqavideo )
    D.V.L. xan_wc3              Wing Commander III / Xan
    D.V.L. xan_wc4              Wing Commander IV / Xxan
    D.VI.. xbin                 eXtended BINary text
    DEVI.S xbm                  XBM (X BitMap) image
    DEVIL. xface                X-face image
    DEVI.S xwd                  XWD (X Window Dump) image
    DEVI.. y41p                 Uncompressed YUV 4:1:1 12-bit
    D.V.L. yop                  Psygnosis YOP Video
    DEVI.. yuv4                 Uncompressed packed 4:2:0
    D.V..S zerocodec            ZeroCodec Lossless Video
    DEVI.S zlib                 LCL (LossLess Codec Library) ZLIB
    DEV..S zmbv                 Zip Motion Blocks Video
    D.A.L. 8svx_exp             8SVX exponential
    D.A.L. 8svx_fib             8SVX fibonacci
    DEA.L. aac                  AAC (Advanced Audio Coding) (decoders: aac libfdk_aac ) (encoders: aac libfdk_aac )
    D.A.L. aac_latm             AAC LATM (Advanced Audio Coding LATM syntax)
    DEA.L. ac3                  ATSC A/52A (AC-3) (encoders: ac3 ac3_fixed )
    D.A.L. adpcm_4xm            ADPCM 4X Movie
    DEA.L. adpcm_adx            SEGA CRI ADX ADPCM
    D.A.L. adpcm_afc            ADPCM Nintendo Gamecube AFC
    D.A.L. adpcm_ct             ADPCM Creative Technology
    D.A.L. adpcm_dtk            ADPCM Nintendo Gamecube DTK
    D.A.L. adpcm_ea             ADPCM Electronic Arts
    D.A.L. adpcm_ea_maxis_xa    ADPCM Electronic Arts Maxis CDROM XA
    D.A.L. adpcm_ea_r1          ADPCM Electronic Arts R1
    D.A.L. adpcm_ea_r2          ADPCM Electronic Arts R2
    D.A.L. adpcm_ea_r3          ADPCM Electronic Arts R3
    D.A.L. adpcm_ea_xas         ADPCM Electronic Arts XAS
    DEA.L. adpcm_g722           G.722 ADPCM (decoders: g722 ) (encoders: g722 )
    DEA.L. adpcm_g726           G.726 ADPCM (decoders: g726 ) (encoders: g726 )
    D.A.L. adpcm_g726le         G.726 ADPCM little-endian (decoders: g726le )
    D.A.L. adpcm_ima_amv        ADPCM IMA AMV
    D.A.L. adpcm_ima_apc        ADPCM IMA CRYO APC
    D.A.L. adpcm_ima_dk3        ADPCM IMA Duck DK3
    D.A.L. adpcm_ima_dk4        ADPCM IMA Duck DK4
    D.A.L. adpcm_ima_ea_eacs    ADPCM IMA Electronic Arts EACS
    D.A.L. adpcm_ima_ea_sead    ADPCM IMA Electronic Arts SEAD
    D.A.L. adpcm_ima_iss        ADPCM IMA Funcom ISS
    D.A.L. adpcm_ima_oki        ADPCM IMA Dialogic OKI
    DEA.L. adpcm_ima_qt         ADPCM IMA QuickTime
    D.A.L. adpcm_ima_rad        ADPCM IMA Radical
    D.A.L. adpcm_ima_smjpeg     ADPCM IMA Loki SDL MJPEG
    DEA.L. adpcm_ima_wav        ADPCM IMA WAV
    D.A.L. adpcm_ima_ws         ADPCM IMA Westwood
    DEA.L. adpcm_ms             ADPCM Microsoft
    D.A.L. adpcm_sbpro_2        ADPCM Sound Blaster Pro 2-bit
    D.A.L. adpcm_sbpro_3        ADPCM Sound Blaster Pro 2.6-bit
    D.A.L. adpcm_sbpro_4        ADPCM Sound Blaster Pro 4-bit
    DEA.L. adpcm_swf            ADPCM Shockwave Flash
    D.A.L. adpcm_thp            ADPCM Nintendo Gamecube THP
    D.A.L. adpcm_xa             ADPCM CDROM XA
    DEA.L. adpcm_yamaha         ADPCM Yamaha
    DEA..S alac                 ALAC (Apple Lossless Audio Codec)
    D.A.L. amr_nb               AMR-NB (Adaptive Multi-Rate NarrowBand) (decoders: amrnb )
    D.A.L. amr_wb               AMR-WB (Adaptive Multi-Rate WideBand) (decoders: amrwb )
    D.A..S ape                  Monkey's Audio
    D.A.L. atrac1               ATRAC1 (Adaptive TRansform Acoustic Coding)
    D.A.L. atrac3               ATRAC3 (Adaptive TRansform Acoustic Coding 3)
    ..A.L. atrac3p              ATRAC3+ (Adaptive TRansform Acoustic Coding 3+)
    D.A.L. binkaudio_dct        Bink Audio (DCT)
    D.A.L. binkaudio_rdft       Bink Audio (RDFT)
    D.A.L. bmv_audio            Discworld II BMV audio
    ..A.L. celt                 Constrained Energy Lapped Transform (CELT)
    DEA.L. comfortnoise         RFC 3389 Comfort Noise
    D.A.L. cook                 Cook / Cooker / Gecko (RealAudio G2)
    D.A.L. dsicinaudio          Delphine Software International CIN audio
    DEA.LS dts                  DCA (DTS Coherent Acoustics) (decoders: dca ) (encoders: dca )
    ..A.L. dvaudio              
    DEA.L. eac3                 ATSC A/52B (AC-3, E-AC-3)
    D.A.L. evrc                 EVRC (Enhanced Variable Rate Codec)
    DEA..S flac                 FLAC (Free Lossless Audio Codec)
    DEA.L. g723_1               G.723.1
    D.A.L. g729                 G.729
    D.A.L. gsm                  GSM
    D.A.L. gsm_ms               GSM Microsoft variant
    D.A.L. iac                  IAC (Indeo Audio Coder)
    ..A.L. ilbc                 iLBC (Internet Low Bitrate Codec)
    D.A.L. imc                  IMC (Intel Music Coder)
    D.A.L. interplay_dpcm       DPCM Interplay
    D.A.L. mace3                MACE (Macintosh Audio Compression/Expansion) 3:1
    D.A.L. mace6                MACE (Macintosh Audio Compression/Expansion) 6:1
    D.A.L. metasound            Voxware MetaSound
    D.A..S mlp                  MLP (Meridian Lossless Packing)
    D.A.L. mp1                  MP1 (MPEG audio layer 1) (decoders: mp1 mp1float )
    DEA.L. mp2                  MP2 (MPEG audio layer 2) (decoders: mp2 mp2float )
    DEA.L. mp3                  MP3 (MPEG audio layer 3) (decoders: mp3 mp3float ) (encoders: libmp3lame )
    D.A.L. mp3adu               ADU (Application Data Unit) MP3 (MPEG audio layer 3) (decoders: mp3adu mp3adufloat )
    D.A.L. mp3on4               MP3onMP4 (decoders: mp3on4 mp3on4float )
    D.A..S mp4als               MPEG-4 Audio Lossless Coding (ALS) (decoders: als )
    D.A.L. musepack7            Musepack SV7 (decoders: mpc7 )
    D.A.L. musepack8            Musepack SV8 (decoders: mpc8 )
    DEA.L. nellymoser           Nellymoser Asao
    DEA.L. opus                 Opus (Opus Interactive Audio Codec) (decoders: libopus ) (encoders: libopus )
    D.A.L. paf_audio            Amazing Studio Packed Animation File Audio
    DEA.L. pcm_alaw             PCM A-law / G.711 A-law
    D.A..S pcm_bluray           PCM signed 16|20|24-bit big-endian for Blu-ray media
    D.A..S pcm_dvd              PCM signed 20|24-bit big-endian
    DEA..S pcm_f32be            PCM 32-bit floating point big-endian
    DEA..S pcm_f32le            PCM 32-bit floating point little-endian
    DEA..S pcm_f64be            PCM 64-bit floating point big-endian
    DEA..S pcm_f64le            PCM 64-bit floating point little-endian
    D.A..S pcm_lxf              PCM signed 20-bit little-endian planar
    DEA.L. pcm_mulaw            PCM mu-law / G.711 mu-law
    DEA..S pcm_s16be            PCM signed 16-bit big-endian
    DEA..S pcm_s16be_planar     PCM signed 16-bit big-endian planar
    DEA..S pcm_s16le            PCM signed 16-bit little-endian
    DEA..S pcm_s16le_planar     PCM signed 16-bit little-endian planar
    DEA..S pcm_s24be            PCM signed 24-bit big-endian
    DEA..S pcm_s24daud          PCM D-Cinema audio signed 24-bit
    DEA..S pcm_s24le            PCM signed 24-bit little-endian
    DEA..S pcm_s24le_planar     PCM signed 24-bit little-endian planar
    DEA..S pcm_s32be            PCM signed 32-bit big-endian
    DEA..S pcm_s32le            PCM signed 32-bit little-endian
    DEA..S pcm_s32le_planar     PCM signed 32-bit little-endian planar
    DEA..S pcm_s8               PCM signed 8-bit
    DEA..S pcm_s8_planar        PCM signed 8-bit planar
    DEA..S pcm_u16be            PCM unsigned 16-bit big-endian
    DEA..S pcm_u16le            PCM unsigned 16-bit little-endian
    DEA..S pcm_u24be            PCM unsigned 24-bit big-endian
    DEA..S pcm_u24le            PCM unsigned 24-bit little-endian
    DEA..S pcm_u32be            PCM unsigned 32-bit big-endian
    DEA..S pcm_u32le            PCM unsigned 32-bit little-endian
    DEA..S pcm_u8               PCM unsigned 8-bit
    D.A.L. pcm_zork             PCM Zork
    D.A.L. qcelp                QCELP / PureVoice
    D.A.L. qdm2                 QDesign Music Codec 2
    ..A.L. qdmc                 QDesign Music
    DEA.L. ra_144               RealAudio 1.0 (14.4K) (decoders: real_144 ) (encoders: real_144 )
    D.A.L. ra_288               RealAudio 2.0 (28.8K) (decoders: real_288 )
    D.A..S ralf                 RealAudio Lossless
    DEA.L. roq_dpcm             DPCM id RoQ
    DEA..S s302m                SMPTE 302M
    D.A..S shorten              Shorten
    D.A.L. sipr                 RealAudio SIPR / ACELP.NET
    D.A.L. smackaudio           Smacker audio (decoders: smackaud )
    ..A.L. smv                  SMV (Selectable Mode Vocoder)
    D.A.L. sol_dpcm             DPCM Sol
    DEA... sonic                Sonic
    .EA... sonicls              Sonic lossless
    ..A.L. speex                Speex
    D.A..S tak                  TAK (Tom's lossless Audio Kompressor)
    D.A..S truehd               TrueHD
    D.A.L. truespeech           DSP Group TrueSpeech
    DEA..S tta                  TTA (True Audio)
    D.A.L. twinvq               VQF TwinVQ
    D.A.L. vima                 LucasArts VIMA audio
    D.A.L. vmdaudio             Sierra VMD audio
    DEA.L. vorbis               Vorbis (decoders: vorbis libvorbis ) (encoders: vorbis libvorbis )
    ..A.L. voxware              Voxware RT29 Metasound
    D.A... wavesynth            Wave synthesis pseudo-codec
    DEA.LS wavpack              WavPack
    D.A.L. westwood_snd1        Westwood Audio (SND1) (decoders: ws_snd1 )
    D.A..S wmalossless          Windows Media Audio Lossless
    D.A.L. wmapro               Windows Media Audio 9 Professional
    DEA.L. wmav1                Windows Media Audio 1
    DEA.L. wmav2                Windows Media Audio 2
    D.A.L. wmavoice             Windows Media Audio Voice
    D.A.L. xan_dpcm             DPCM Xan
    ..D... dvd_nav_packet       DVD Nav packet
    ..D... klv                  SMPTE 336M Key-Length-Value (KLV) metadata
    DES... ass                  ASS (Advanced SSA) subtitle
    DES... dvb_subtitle         DVB subtitles (decoders: dvbsub ) (encoders: dvbsub )
    ..S... dvb_teletext         DVB teletext
    DES... dvd_subtitle         DVD subtitles (decoders: dvdsub ) (encoders: dvdsub )
    ..S... eia_608              EIA-608 closed captions
    D.S... hdmv_pgs_subtitle    HDMV Presentation Graphic Stream subtitles (decoders: pgssub )
    D.S... jacosub              JACOsub subtitle
    D.S... microdvd             MicroDVD subtitle
    DES... mov_text             MOV text
    D.S... mpl2                 MPL2 subtitle
    D.S... pjs                  PJS (Phoenix Japanimation Society) subtitle
    D.S... realtext             RealText subtitle
    D.S... sami                 SAMI subtitle
    DES... srt                  SubRip subtitle with embedded timing
    DES... ssa                  SSA (SubStation Alpha) subtitle
    DES... subrip               SubRip subtitle
    D.S... subviewer            SubViewer subtitle
    D.S... subviewer1           SubViewer v1 subtitle
    D.S... text                 raw UTF-8 text
    D.S... vplayer              VPlayer subtitle
    D.S... webvtt               WebVTT subtitle
    DES... xsub                 XSUB
  • Adventures In NAS

    1er janvier, par Multimedia Mike — General

    In my post last year about my out-of-control single-board computer (SBC) collection which included my meager network attached storage (NAS) solution, I noted that :

    I find that a lot of my fellow nerds massively overengineer their homelab NAS setups. I’ll explore this in a future post. For my part, people tend to find my homelab NAS solution slightly underengineered.

    So here I am, exploring this is a future post. I’ve been in the home NAS game a long time, but have never had very elaborate solutions for such. For my part, I tend to take an obsessively reductionist view of what constitutes a NAS : Any small computer with a pool of storage and a network connection, running the Linux operating system and the Samba file sharing service.


    Simple hard drive and ethernet cable

    Many home users prefer to buy turnkey boxes, usually that allow you to install hard drives yourself, and then configure the box and its services with a friendly UI. My fellow weird computer nerds often buy cast-off enterprise hardware and set up more resilient, over-engineered solutions, as long as they have strategies to mitigate the noise and dissipate the heat, and don’t mind the electricity bills.

    If it works, awesome ! As an old hand at this, I am rather stuck in my ways, however, preferring to do my own stunts, both with the hardware and software solutions.

    My History With Home NAS Setups
    In 1998, I bought myself a new computer — beige box tower PC, as was the style as the time. This was when normal people only had one computer at most. It ran Windows, but I was curious about this new thing called “Linux” and learned to dual boot that. Later that year, it dawned on me that nothing prevented me from buying a second ugly beige box PC and running Linux exclusively on it. Further, it could be a headless Linux box, connected by ethernet, and I could consolidate files into a single place using this file sharing software named Samba.

    I remember it being fairly onerous to get Samba working in those days. And the internet was not quite so helpful in those days. I recall that the thing that blocked me for awhile was needing to know that I had to specify an entry for the Samba server machine in the LMHOSTS (Lanman hosts) file on the Windows 95 machine.

    However, after I cracked that code, I have pretty much always had some kind of ad-hoc home NAS setup, often combined with a headless Linux development box.

    In the early 2000s, I built a new beige box PC for a file server, with a new hard disk, and a coworker tutored me on setting up a (P)ATA UDMA 133 (or was it 150 ? anyway, it was (P)ATA’s last hurrah before SATA conquered all) expansion card and I remember profiling that the attached hard drive worked at a full 21 MBytes/s reading. It was pretty slick. Except I hadn’t really thought things through. You see, I had a hand-me-down ethernet hub cast-off from my job at the time which I wanted to use. It was a 100 Mbps repeater hub, not a switch, so the catch was that all connected machines had to be capable of 100 Mbps. So, after getting all of my machines (3 at the time) upgraded to support 10/100 ethernet (the old off-brand PowerPC running Linux was the biggest challenge), I profiled transfers and realized that the best this repeater hub could achieve was about 3.6 MBytes/s. For a long time after that, I just assumed that was the upper limit of what a 100 Mbps network could achieve. Obviously, I now know that the upper limit ought to be around 11.2 MBytes/s and if I had gamed out that fact in advance, I would have realized it didn’t make sense to care about super-fast (for the time) disk performance.

    At this time, I was doing a lot for development for MPlayer/xine/FFmpeg. I stored all of my multimedia material on this NAS. I remember being confused when I was working with Y4M data, which is raw frames, which is lots of data. xine, which employed a pre-buffering strategy, would play fine for a few seconds and then stutter. Eventually, I reasoned out that the files I was working with had a data rate about twice what my awful repeater hub supported, which is probably the first time I came to really understand and respect streaming speeds and their implications for multimedia playback.

    Smaller Solutions
    For a period, I didn’t have a NAS. Then I got an Apple AirPort Extreme, which I noticed had a USB port. So I bought a dual drive brick to plug into it and used that for a time. Later (2009), I had this thing called the MSI Wind Nettop which is the only PC I’ve ever seen that can use a CompactFlash (CF) card for a boot drive. So I did just that, and installed a large drive so it could function as a NAS, as well as a headless dev box. I’m still amazed at what a low-power I/O beast this thing is, at least when compared to all the ARM SoCs I have tried in the intervening 1.5 decades. I’ve had spinning hard drives in this thing that could read at 160 MBytes/s (‘dd’ method) and have no trouble saturating the gigabit link at 112 MBytes/s, all with its early Intel Atom CPU.

    Around 2015, I wanted a more capable headless dev box and discovered Intel’s line of NUCs. I got one of the fat models that can hold a conventional 2.5″ spinning drive in addition to the M.2 SATA SSD and I was off and running. That served me fine for a few years, until I got into the ARM SBC scene. One major limitation here is that 2.5″ drives aren’t available in nearly the capacities that make a NAS solution attractive.

    Current Solution
    My current NAS solution, chronicled in my last SBC post– the ODroid-HC2, which is a highly compact ARM SoC with an integrated USB3-SATA bridge so that a SATA drive can be connected directly to it :


    ODROID-HC2 NAS

    ODROID-HC2 NAS


    I tend to be weirdly proficient at recalling dates, so I’m surprised that I can’t recall when I ordered this and put it into service. But I’m pretty sure it was circa 2018. It’s only equipped with an 8 TB drive now, but I seem to recall that it started out with only a 4 TB drive. I think I upgraded to the 8 TB drive early in the pandemic in 2020, when ISPs were implementing temporary data cap amnesty and I was doing what a r/DataHoarder does.

    The HC2 has served me well, even though it has a number of shortcomings for a hardware set chartered for NAS :

    1. While it has a gigabit ethernet port, it’s documented that it never really exceeds about 70 MBytes/s, due to the SoC’s limitations
    2. The specific ARM chip (Samsung Exynos 5422 ; more than a decade old as of this writing) lacks cryptography instructions, slowing down encryption if that’s your thing (e.g., LUKS)
    3. While the SoC supports USB3, that block is tied up for the SATA interface ; the remaining USB port is only capable of USB2 speeds
    4. 32-bit ARM, which prevented me from running certain bits of software I wanted to try (like Minio)
    5. Only 1 drive, so no possibility for RAID (again, if that’s your thing)

    I also love to brag on the HC2’s power usage : I once profiled the unit for a month using a Kill-A-Watt and under normal usage (with the drive spinning only when in active use). The unit consumed 4.5 kWh… in an entire month.

    New Solution
    Enter the ODroid-HC4 (I purchased mine from Ameridroid but Hardkernel works with numerous distributors) :


    ODroid-HC4 with 2 drives

    ODroid-HC4 with an SSD and a conventional drive


    I ordered this earlier in the year and after many months of procrastinating and obsessing over the best approach to take with its general usage, I finally have it in service as my new NAS. Comparing point by point with the HC2 :

    1. The gigabit ethernet runs at full speed (though a few things on my network run at 2.5 GbE now, so I guess I’ll always be behind)
    2. The ARM chip (Amlogic S905X3) has AES cryptography acceleration and handles all the LUKS stuff without breaking a sweat ; “cryptsetup benchmark” reports between 500-600 MBytes/s on all the AES variants
    3. The USB port is still only USB2, so no improvement there
    4. 64-bit ARM, which means I can run Minio to simulate block storage in a local dev environment for some larger projects I would like to undertake
    5. Supports 2 drives, if RAID is your thing

    How I Set It Up
    How to set up the drive configuration ? As should be apparent from the photo above, I elected for an SSD (500 GB) for speed, paired with a conventional spinning HDD (18 TB) for sheer capacity. I’m not particularly trusting of RAID. I’ve watched it fail too many times, on systems that I don’t even manage, not to mention that aforementioned RAID brick that I had attached to the Apple AirPort Extreme.

    I had long been planning to use bcache, the block caching interface for Linux, which can use the SSD as a speedy cache in front of the more capacious disk. There is also LVM cache, which is supposed to achieve something similar. And then I had to evaluate the trade-offs in whether I wanted write-back, write-through, or write-around configurations.

    This was all predicated on the assumption that the spinning drive would not be able to saturate the gigabit connection. When I got around to setting up the hardware and trying some basic tests, I found that the conventional HDD had no trouble keeping up with the gigabit data rate, both reading and writing, somewhat obviating the need for SSD acceleration using any elaborate caching mechanisms.

    Maybe that’s because I sprung for the WD Red Pro series this time, rather than the Red Plus ? I’m guessing that conventional drives do deteriorate over the years. I’ll find out.

    For the operating system, I stuck with my newest favorite Linux distro : DietPi. While HardKernel (parent of ODroid) makes images for the HC units, I had also used DietPi for the HC2 for the past few years, as it tends to stay more up to date.

    Then I rsync’d my data from HC2 -> HC4. It was only about 6.5 TB of total data but it took days as this WD Red Plus drive is only capable of reading at around 10 MBytes/s these days. Painful.

    For file sharing, I’m pretty sure most normal folks have nice web UIs in their NAS boxes which allow them to easily configure and monitor the shares. I know there are such applications I could set up. But I’ve been doing this so long, I just do a bare bones setup through the terminal. I installed regular Samba and then brought over my smb.conf file from the HC2. 1 by 1, I tested that each of the old shares were activated on the new NAS and deactivated on the old NAS. I also set up a new share for the SSD. I guess that will just serve as a fast I/O scratch space on the NAS.

    The conventional drive spins up and down. That’s annoying when I’m actively working on something but manage not to hit the drive for like 5 minutes and then an application blocks while the drive wakes up. I suppose I could set it up so that it is always running. However, I micro-manage this with a custom bash script I wrote a long time ago which logs into the NAS and runs the “date” command every 2 minutes, appending the output to a file. As a bonus, it also prints data rate up/down stats every 5 seconds. The spinning file (“nas-main/zz-keep-spinning/keep-spinning.txt”) has never been cleared and has nearly a quarter million lines. I suppose that implies that it has kept the drive spinning for 1/2 million minutes which works out to around 347 total days. I should compare that against the drive’s SMART stats, if I can remember how. The earliest timestamp in the file is from March 2018, so I know the HC2 NAS has been in service at least that long.

    For tasks, vintage cron still does everything I could need. In this case, that means reaching out to websites (like this one) and automatically backing up static files.

    I also have to have a special script for starting up. Fortunately, I was able to bring this over from the HC2 and tweak it. The data disks (though not boot disk) are encrypted. Those need to be unlocked and only then is it safe for the Samba and Minio services to start up. So one script does all that heavy lifting in the rare case of a reboot (this is the type of system that’s well worth having on a reliable UPS).

    Further Work
    I need to figure out how to use the OLED display on the NAS, and how to make it show something more useful than the current time and date, which is what it does in its default configuration with HardKernel’s own Linux distro. With DietPi, it does nothing by default. I’m thinking it should be able to show the percent usage of each of the 2 drives, at a minimum.

    I also need to establish a more responsible backup regimen. I’m way too lazy about this. Fortunately, I reason that I can keep the original HC2 in service, repurposed to accept backups from the main NAS. Again, I’m sort of micro-managing this since a huge amount of data isn’t worth backing up (remember the whole DataHoarder bit), but the most important stuff will be shipped off.

    The post Adventures In NAS first appeared on Breaking Eggs And Making Omelettes.