Recherche avancée

Médias (0)

Mot : - Tags -/tags

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

Autres articles (67)

  • (Dés)Activation de fonctionnalités (plugins)

    18 février 2011, par

    Pour gérer l’ajout et la suppression de fonctionnalités supplémentaires (ou plugins), MediaSPIP utilise à partir de la version 0.2 SVP.
    SVP permet l’activation facile de plugins depuis l’espace de configuration de MediaSPIP.
    Pour y accéder, il suffit de se rendre dans l’espace de configuration puis de se rendre sur la page "Gestion des plugins".
    MediaSPIP est fourni par défaut avec l’ensemble des plugins dits "compatibles", ils ont été testés et intégrés afin de fonctionner parfaitement avec chaque (...)

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

  • Keeping control of your media in your hands

    13 avril 2011, par

    The vocabulary used on this site and around MediaSPIP in general, aims to avoid reference to Web 2.0 and the companies that profit from media-sharing.
    While using MediaSPIP, you are invited to avoid using words like "Brand", "Cloud" and "Market".
    MediaSPIP is designed to facilitate the sharing of creative media online, while allowing authors to retain complete control of their work.
    MediaSPIP aims to be accessible to as many people as possible and development is based on expanding the (...)

Sur d’autres sites (9517)

  • Adding ffmpeg OMX codec to Genymotion Android 4.4.2 emulator

    22 avril 2016, par photon

    Basic Question :

    Is there a way to add a new audio codec to the Genymotion Android emulator, short of downloading the entire Android source, learning how to build it, and creating my own version of Android ?


    Context :

    I have written a java Android app that acts as an audio renderer, as well as being a DLNA/OpenHome server and client. Think "BubbleUpnp" without video. My primary development platform is Win8.1. The program started as an ActiveState "pure-perl" DLNA MediaServer on Windows, which I then ported to Ubuntu, which I got working under Android a few years ago. It was pretty funky ... all UI being presented thru an HTTP server/jquery/jquery-ui, served from an Ubuntu shell running under Android (a trick in itself), serving up HTML pages to Chrome running on the same (Android) device. Besides being "funky" it had a major drawback that it required a valid IP address to work ... as I could not figure out how to get ubuntu to have a local loopback device for a 127.0.0.01 localhost I use the app as a "car stereo" on my boat (which is my home), which is often not hooked up to the internet.

    I had a hard time getting started in Android app development because the speed of the Android emulators in Eclipse was horrid, and the ADB drivers did not work from Win8 for the longest time.

    Then one day, about a year ago, I ran into Genymotion (kudos to the authors), and all of a sudden I had a workable Android development environment, so I added a Java implementation of the DLNA server, which then grew into a renderer also, using Android’s MediaPlayer class, and, adding the ability to act as a DLNA control point, and more recently also added OpenHome servers and renderers to it.

    In a separate effort, I created a build environment for this program called fpCalc, based on ffMpeg, on a variety of platforms, including Win, Linux, and Android x86, arm, and arm7 devices (bitbucket.org/phorton1/) and did an extensive series of tests to determine the validity, and longevity of fpcalc fingerprints, discovering that the fpCalc fingerprint changed based on the version of ffmpeg it was built against, a separate topic to be sure, but in the process, learned at least a bit about how to build ffmpeg as well as Android shared libraries, JNI interfaces, etc.

    So now the Android-Java version of the program has advanced past the old perl version, and I am debating whether I want to continue to try to build the perl version (and or add an wxPerl UI) to it.

    One issue that has arisen, for me, is that the Genymotion emulator does not support WMA decoding ... as Android dropped support for WMA due to licensing issues, etc, a ways back in time ... yet my music library has significant numbers of tunes in WMA files, and I don’t want to "convert" them, my carefully thought-out philosophy is that my program does not modify the contents, or tags, or anything in the original media files that I have accumulated, or will receive in the future, rather treating them as "artifacts" worth preserving "as is". No conversion is going to make a file "better" than it was, and I wish to preserve ALL of the original sources for ALL of my music going forward.

    So, I’m thinking, gee, I can build FFMPEG on 7 different platforms, and I see all these references to "OMX FFMPEG Codec Support for Android" on the net, so I’m thinking, "All I need to do is create the OMX Component and somehow get it into Genymotion".

    I have studied up OMX, OpenMaxIL, seen Michael Chen’s posts, seen the stack overflow questions

    How to make ffmpeg codec componet as OMX component

    and

    Android : How to integrate a decoder to multimedia framework

    and Cedric Fung’s page https://vec.io/posts/use-android-hardware-decoder-with-omxcodec-in-ndk, and Michael Chen’s repository at https://github.com/omxcodec , as well as virtually every other page on the net that mentions any combination of libstagefright, OMX, Genymotion, and FFMPEG.

    (this page would not let me put more than 2 links as i don’t have a "10" reputation, or I would have listed some of the sources I have seen) ..

    My Linux development environment is a Ubuntu12.04 vbox running on my win machine. I have downloaded and run the Android-x86 iso as a vbox, and IT contains the ffmpeg codecs, but unfortunately, it neither supports a wifi interface, nor the vbox "guest additions", so it has a really funky mouse. I tried for about 3 days to address those two issues, but in the end do not feel it is usable for my puproses, and I really like the way genymotion "feels", particularly the moust support, so I’d like to keep genymotion as my "windows android" virtual device under which I may run my program, deprecate and stop using my old perl source,

    except genymotion does not support WMA files ...


    Several side notes :

    (a) There is no good way to write a single sourced application in Java that runs natively in Windows, AND as an Android app.

    (b) I don’t want to reboot my Windows machine to a "real" Android device just to play my music files. The machine has to stay in Windows as I use it for other things as well.

    (c) I am writing this as my machine is in the 36th hour of downloading the entire ASOP source code base to a partition in my Ubuntu vbox while I am sitting in a hotel room on a not-so-good internet connection in Panama City, Panama, before I return to my boat in remote Bocas Del Toro Panama, where the internet connection is even worse.

    (d) I did get WMA decoding to work in my app by calling my FFMPEG executable from Java (converting it to either WAV/PCM or AAC), but, because of limitations in Android’s MediaPlayer, it does not work well, particularly for remotely hosted WMA files ... MediaPlayer insists on having the whole file present before it starts to play, which can take several seconds or longer, and I am hoping that by getting a ’real’ WMA codec underneath MediaPlayer, that problem will just disappear ....


    So, I’m trying to figure this whole mess out. There are a lot of tantalizing clues, and suggestions, but what I have found, or at least what I am starting to believe, is that if I want to add a simple WMA audio decoding codec to Android (Genymotion), not only do I have to download, basically, the ENTIRE ASOP Android source tree, and learn a new set of tools (repo, etc), but I have to (be able to) rebuild, from scratch, the entire Android system, esp. libstagefright.so in such a way as to be COMPLETELY compatible with the existing one in GenyMotion, while at the same time adding ffmpeg codecs ala Michael Chen’s page.

    And I’m just asking, is it, could it really be that difficult ?


    Anyways, this makes me crazy. Is there no way to just build a new component, or at worst a new OMX core, and add it to Genymotion, WITHOUT building all of Android, and preferably, based only on the OMX h files ? Or do I REALLY have to replace the existing libstagefright.so, which means, basically, rebuilding all of Android ...

    p.s. I thought it would be nice to get this figured out, build it, and then post the installable new FFMPEG codecs someplace for other people to use, so that they don’t also grow warts on their ears and have steam shooting out of their eyeballs, while they get old trying to figure it out ....

  • CCPA vs GDPR : Understanding Their Impact on Data Analytics

    19 mars, par Alex Carmona

    With over 400 million internet users in Europe and 331 million in the US (11% of which reside in California alone), understanding the nuances of privacy laws like the General Data Protection Regulation (GDPR) and the California Consumer Privacy Act (CCPA) is crucial for compliant and ethical consumer data collection.

    Navigating this compliance landscape can be challenging for businesses serving European and Californian markets.

    This guide explores the key differences between CCPA and GDPR, their impact on data analytics, and how to ensure your business meets these essential privacy requirements.

    What is the California Consumer Privacy Act (CCPA) ?

    The California Consumer Privacy Act (CCPA) is a data privacy law that gives California consumers control over their personal information. It applies to for-profit businesses operating in California that meet specific criteria related to revenue, data collection and sales.

    Origins and purpose

    The CCPA addresses growing concerns about data privacy and how businesses use personal information in California. The act passed in 2018 and went into effect on 1 January 2020.

    Key features

    • Grants consumers the right to know what personal information is collected
    • Provides the right to delete personal information
    • Allows consumers to opt out of the sale of their personal information
    • Prohibits discrimination against consumers who exercise their CCPA rights

    Key definitions under the CCPA framework

    • Business : A for-profit entity doing business in California and meeting one or more of these conditions :
      • Has annual gross revenues over $25 million ;
      • Buys, receives, sells or shares 50,000 or more consumers’ personal information ; or
      • Derives 50% or more of its annual revenues from selling consumers’ personal information
    • Consumer : A natural person who is a California resident
    • Personal Information : Information that could be linked to, related to or used to identify a consumer or household, such as online identifiers, IP addresses, email addresses, social security numbers, cookie identifiers and more

    What is the General Data Protection Regulation (GDPR) ?

    The General Data Protection Regulation (GDPR) is a data privacy and protection law passed by the European Union (EU). It’s one of the strongest and most influential data privacy laws worldwide and applies to all organisations that process the personal data of individuals in the EU.

    Origins and purpose

    The GDPR was passed in 2016 and went into effect on 25 May 2018. It aims to harmonise data privacy laws in Europe and give people in the European Economic Area (EEA) privacy rights and control over their data.

    Key features

    • Applies to all organisations that process the personal data of individuals in the EEA
    • Grants individuals a wide range of privacy rights over their data
    • Requires organisations to obtain explicit and informed consent for most data processing
    • Mandates appropriate security measures to protect personal data
    • Imposes significant fines and penalties for non-compliance

    Key definitions under the GDPR framework

    • Data Subject : An identified or identifiable person
    • Personal Data : Any information relating to a data subject
    • Data Controller : The entity or organisation that determines how personal data is processed and what for
    • Data Processor : The entity or organisation that processes the data on behalf of the controller

    CCPA vs. GDPR : Key similarities

    The CCPA and GDPR enhance consumer privacy rights and give individuals greater control over their data.

    DimensionCCPAGDPR
    PurposeProtect consumer privacyProtect individual data rights
    Key RightsRight to access, delete and opt out of saleRight to access, rectify, erase and restrict processing
    TransparencyRequires transparency around data collection and useRequires transparency about data collection, processing and use

    CCPA vs. GDPR : Key differences

    While they have similar purposes, the CCPA and GDPR differ significantly in their scope, approach and specific requirements.

    DimensionCCPAGDPR
    ScopeFor-profit businesses onlyAll organisations processing EU consumer data
    Territorial ReachCalifornia-based natural personsAll data subjects within the EEA
    ConsentOpt-out systemOpt-in system
    PenaltiesPer violation based on its intentional or negligent natureCase-by-case based on comprehensive assessment
    Individual RightsNarrower (relative to GDPR)Broader (relative to CCPA)

    CCPA vs. GDPR : A multi-dimensional comparison

    The previous sections gave a broad overview of the similarities and differences between CCPA and GDPR. Let’s now examine nine key dimensions where these regulations converge or diverge and discuss their impact on data analytics.

    Regulatory overlap between GDPR and CCPA.

    #1. Scope and territorial reach

    The GDPR has a much broader scope than the CCPA. It applies to all organisations that process the personal data of individuals in the EEA, regardless of their business model, purpose or physical location.

    The CCPA applies to medium and large for-profit businesses that derive a substantial portion of their earnings from selling Californian consumers’ personal information. It doesn’t apply to non-profits, government agencies or smaller for-profit companies.

    Impact on data analytics

    The difference in scope significantly impacts data analytics practices. Smaller businesses may not need to comply with either regulation, some may only need to follow the CCPA, while most global businesses must comply with both. This often requires different methods for collecting and processing data in California, Europe, and elsewhere.

    #2. Penalties and fines for non-compliance

    Both the CCPA and GDPR impose penalties for non-compliance, but the severity of fines differs significantly :

    CCPAMaximum penalty
    $2,500 per unintentional violation
    $7,500 per intentional violation

    “Per violation” means per violation per impacted consumer. For example, three intentional CCPA violations affecting 1,000 consumers would result in 3,000 total violations and a $22.5 million maximum penalty (3,000 × $7,500).

    The largest CCPA fine to date was Zoom’s $85 million settlement in 2021.

    In contrast, the GDPR has resulted in 2,248 fines totalling almost €6.6 billion since 2018 — €2.4 billion of which were for non-compliance.

    GDPRMaximum penalty
    €20 million or
    4% of all revenue earned the previous year

    So far, the biggest fine imposed under the GDPR was Meta’s €1.2 billion fine in May 2023 — 15 times more than Zoom had to pay California.

    Impact on data analytics

    The significant difference in potential fines demonstrates the importance of regulatory compliance for data analytics professionals. Non-compliance can have severe financial consequences, directly affecting budget allocation and business operations.

    Businesses must ensure their data collection, storage and processing practices comply with regulations in both Europe and California.

    Choosing privacy-first, compliance-ready analytics platforms like Matomo is instrumental for mitigating non-compliance risks.

    #3. Data subject rights and consumer rights

    The CCPA and GDPR give people similar rights over their data, but their limitations and details differ.

    Rights common to the CCPA and GDPR

    • Right to Access/Know : People can access their personal information and learn what data is collected, its source, its purpose and how it’s shared
    • Right to Delete/Erasure : People can request the deletion of their personal information, with some exceptions
    • Right to Non-Discrimination : Businesses can’t discriminate against people who exercise their privacy rights

    Consumer rights unique to the CCPA

    • Right to Opt Out of Sale : Consumers can prohibit the sale of their personal information
    • Right to Notice : Businesses must inform consumers about data collection practices
    • Right to Disclosure : Consumers can request specific information collected about them

    Data subject rights unique to the GDPR

    • Right to be Informed : Broader transparency requirements encompass data retention, automated decision-making and international transfers
    • Right to Rectification : Data subjects may request the correction of inaccurate data
    • Right to Restrict Processing : Consumers may limit data use in certain situations
    • Right to Data Portability : Businesses must provide individual consumer data in a secure, portable format when requested
    • Right to Withdraw Consent : Consumers may withdraw previously granted consent to data processing
    CCPAGDPR
    Right to Access or Know
    Right to Delete or Erase
    Right to Non-Discrimination
    Right to Opt-Out
    Right to Notice
    Right to Disclosure
    Right to be Informed
    Right to Rectification
    Right to Restrict Processing
    Right to Data Portability
    Right to Withdraw Consent

    Impact on data analytics

    Data analysts must understand these rights and ensure compliance with both regulations, which could potentially require separate data handling processes for EU and California consumers.

    #4. Opt-out vs. opt-in

    The CCPA generally follows an opt-out model, while the GDPR requires explicit consent from individuals before processing their data.

    Impact on data analytics

    For CCPA compliance, businesses can collect data by default if they provide opt-out mechanisms. Failing to process opt-out requests can result in severe penalties, like Sephora’s $1.2 million fine.

    Under GDPR, organisations must obtain explicit consent before collecting any data, which can limit the amount of data available for analysis.

    #5. Parental consent

    The CCPA and GDPR have provisions regarding parental consent for processing children’s data. The CCPA requires parental consent for children under 13, while the GDPR sets the age at 16, though member states can lower it to 13.

    Impact on data analytics

    This requirement significantly impacts businesses targeting younger audiences. In Europe and the US, companies must implement different methods to verify users’ ages and obtain parental consent when necessary.

    The California Attorney General’s Office recently fined Tilting Point Media LLC $500,000 for sharing children’s data without parental consent.

    #6. Data security requirements

    Both regulations require businesses to implement adequate security measures to protect personal data. However, the GDPR has more prescriptive requirements, outlining specific security measures and emphasising a risk-based approach.

    Impact on data analytics

    Data analytics professionals must ensure that data is processed and stored securely to avoid breaches and potential fines.

    #7. International data transfers

    Both the CCPA and GDPR address international data transfers. Under the CCPA, businesses must only inform consumers about international transfers. The GDPR has stricter requirements, including ensuring adequate data protection safeguards for transfers outside the EEA.

    A world map illustration.

    Other rules, like the Payment Services Directive 2 (PSD2), also affect international data transfers, especially in the financial industry.

    PSD2 requires strong customer authentication and secure communication channels for payment services. This adds complexity to cross-border data flows.

    Impact on data analytics

    The primary impact is on businesses serving European residents from outside Europe. Processing data within the European Union is typically advisable. Meta’s record-breaking €1.2 billion fine was specifically for transferring data from the EEA to the US without sufficient safeguards.

    Choosing the right analytics platform helps avoid these issues.

    For example, Matomo offers a free, open-source, self-hosted analytics platform you can deploy anywhere. You can also choose a managed, GDPR-compliant cloud analytics solution with all data storage and processing servers within the EU (in Germany), ensuring your data never leaves the EEA.

    #8. Enforcement mechanisms

    The California Attorney General is responsible for enforcing CCPA requirements, while in Europe, the Data Protection Authority (DPA) in each EU member state enforces GDPR requirements.

    Impact on data analytics

    Data analytics professionals should be familiar with their respective enforcement bodies and their powers to support compliance efforts and minimise the risk of fines and penalties.

    #9. Legal basis for personal data processing

    The GDPR outlines six legal grounds for processing personal data :

    • Consent
    • Contract
    • Legal obligation
    • Vital interests
    • Public task
    • Legitimate interests

    The CCPA doesn’t explicitly define lawful bases but focuses on consumer rights and transparency in general.

    Impact on data analytics

    Businesses subject to the GDPR must identify and document a valid lawful basis for each processing activity.

    Compliance rules under CCPA and GDPR

    Complying with the CCPA and GDPR requires a comprehensive approach to data privacy. Here’s a summary of the essential compliance rules for each framework :

    Key compliance points under CCPA and GDPR.

    CCPA compliance rules

    • Create clear and concise privacy policies outlining data collection and use practices
    • Give consumers the right to opt-out
    • Respond to consumer requests to access, delete and correct their personal information
    • Implement reasonable security measures for consumers’ personal data protection
    • Never discriminate against consumers who exercise their CCPA rights

    GDPR compliance rules

    • Obtain explicit and informed consent for data processing activities
    • Implement technical and organisational controls to safeguard personal data
    • Designate a Data Protection Officer (DPO) if necessary
    • Perform data protection impact assessments (DPIAs) for high-risk processing activities
    • Maintain records of processing activities
    • Promptly report data breaches to supervisory authorities

    Navigating the CCPA and GDPR with confidence

    Understanding the nuances of the CCPA and GDPR is crucial for businesses operating in the US and Europe. These regulations significantly impact data collection and analytics practices.

    Implementing robust data security practices and prioritising privacy and compliance are essential to avoid severe penalties and build trust with today’s privacy-conscious consumers.

    Privacy-centric analytics platforms like Matomo enable businesses to collect, analyse and use data responsibly and transparently, extracting valuable insights while maintaining compliance with both CCPA and GDPR requirements.

    no credit card required

  • 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.