4

TL;DR;

What are the real-world disadvantages of setting the OTP on Pi3B for USB boot.

A bit longer :

As we know the Pi3B+ is pre-configured for enabling USB boot, but The Pi3B needs one-time configuration with OTP procedure which is by nature of OTP not reversible.

My question is : what are the known real-world disadvantages of this procedure ( if any - and maybe platform / OS specific ) or what are the reasons of NOT doing it on all of the supported pre-PiB+ boards one possess.

For example, I know the theoretical limit of USB transfer rates is much lower than SD. But this is theoretical and widely depends on the vendors and type. How much does something like that really affects real-life scenarios? Also : is there a benchmark data on that ( what is the difference time-wise) ?

On the other hand, in systems where there is a high rate of writes and rewrites - the USB would have a real advantage ( durability ) over SD / TF.

So in short again: is there any reason for one not to apply the OTP procedure on all supported boards one have ?

4
  • 1
    Setting OTP makes the Pi3B the same as Pi3B+. Both still boot from SD Card, if present.
    – Milliways
    Jun 28, 2019 at 7:44
  • @Milliways, yes I know - but what are the disadvantages if any ? Jun 28, 2019 at 8:47
  • Your question is ambiguous. The Pi3B+ has the same code (AFAIK) but the OTP bit is already set.
    – Milliways
    Jun 28, 2019 at 10:16
  • @Milliways . I don't understand. what part is ambiguous ? I know the Pi3B+ has it already set. I even wrote that in the question.the question is not about a comparison between the two pi's, but about the disadvantages, if any, of SD/TF vs. USB boot. Jun 28, 2019 at 12:04

1 Answer 1

4

I had a customer who was using many raspberry pi 2. Those were booting from the sd card. 2-3 years ago he started having issues with corrupted sd cards.

I then decided to change the boot location from the sd card to the usb stick. The pro was that even if a usb stick failed, you wouldn't have to dismantle the machine to get access to the sd card. You just replaced the usb stick, to which you had easy access. Fast forward 6 months and boy oh boy did I regret that decision. The usb sticks were dropping like flies. Every day phone calls about re-imaging usb sticks. Suspects? Many. The customer switching on and off the devices all the time. Problem with the psu problem with the software in the raspberry. Tried different usb sticks, made read only images for the usb sticks. Nothing. After changing to usb boot, all the customers after the original one, had their devices booting from usb sticks as well. Their Usb sticks were dying as well. In the mean time I had moved from pi 2 to pi3. Still the problems remained and I thing they became even worse.

In the end I went back to sd cards, but industrial grade ones. My main suspect was not the constant writing (I was really careful not writing unnecessary data, I even moved stuff I was writing to temporary ram folders. It was the constant reading of data. There is a thing called "read disturb" that occurs when you are reading many many times from the same location without ever writing to it and that corrupts data around it. So the solution is to use industrial grade cards that have a technology that monitors how many times you've read from a spot and moves the data if required.

About a year an a half after changing the boot location to an industrial grade micro sd card, I haven't had any issues with corrupted cards. At this point I am almost done replacing all the "usb booting" customers to sd card booting.

Those are my 5 cents.

4
  • SO basically you are saying that the USB that you have used were LESS resilient than the SD/TF ? can you elaborate on what was the OS/Dist and more or less on the application ? Personally I have always used high-grade SD, but on high frequency write operation applications ( like many IOT ) I did had some problems even with the highest grade. Jun 29, 2019 at 3:13
  • Yeap, exactly. VERSION="8 (jessie)" console only and I am running python scripts mainly "speaking" serial to other devices. I am still using raspi 3b but at some point I will move to 3b+ and maybe 4 if by the time it becomes necessary it makes more sense to go to 4 and skip 3b+. The key word is not high-grade but industrial-grade. You need to use something that handles that "read disturb" thing I talked about.
    – papatrexas
    Jun 30, 2019 at 12:02
  • About writing very often, most industrial grade cards will have a wear control thingy (make sure they are writing/moving data around the whole area of the sdcard) but also in fstab you can change how often the os is writing to the sdcard. May I suggest you change the commit time from the default 10 seconds, I think, to something close to a minute or 2? Ocourse you will loose something written between the intervals, but if it is crucial you can issue a "sync" command in bash that forces a commit. Sorry if my terminology is off but I hope you get the picture.
    – papatrexas
    Jun 30, 2019 at 12:02
  • I don't know if things are better now with 3b+ and even 4 regarding usb sticks, but my personal experience on 2 and 3b says not.
    – papatrexas
    Jun 30, 2019 at 12:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.