What really happens on Pyra bootup?


Hhhendrik

Still Fresh
Joined
Jun 7, 2025
Messages
3
Hi fellow Pyramanics,

I have the crazy idea to address some of the remaining ailments of the Pyra, (e.g. USB support in u-boot (for netboot), strange noise in headphones etc.).
For that, I would need to quickly try out kernels, u-boot images etc. -- which also explains my interest in netboot.
So far, I have failed to boot a custom MLO/u-boot image.

So my question to the hardware/firmware experts: How does Pyra actually start up? AFAIK, it looks for the MLO, which starts u-boot, and then ... what flashes the LEDs on the powerbutton / logo to flash? Which code looks at the partitions/boot flag of the left SD slot and decides if and what to boot? Are there "magic keys" I need to press?

A lot of information found here in the forum or the Pandorawiki is for Pandora, and it did not work for me.
I tried creating a disk with the Letuxos "makesd" tool, put it in the left SD slot, in the internal µSD slot, it always seems to boot from the internal u-boot/MLO.
 
It's been ages since I've dealt with anything custom on the Pyra, I've been spoiled with pre-built images that just boot when inserted. So I don't believe there is a magic key, it just needs to be bootable. I remember the makeSD script being a bit half baked as well.
 
Not sure whether I'm breaking any rules by posting such an old thread...

TI pulled most of their OMAP5 stuff, fortunately they are still hosting the TRM - grab it while you can! The previous links don't work, but try these - as before a TI account is needed for export control purposes, but no actual NDA etc is required.

List of documents including TRM: http://www.ti.com/wcmcomponents/doc...=9263&familyId=601&tabId=7392&docCategoryId=6

Direct link to TRM Rev AF: http://www.ti.com/lit/pdf/swpu249

If these links ever break I have saved a copy and can send it to people.

Edit: some other potentially useful documents

Early version of the data manual with electrical specifications: http://pdf.radioaktiv.ru/ds/ti/swps051e.pdf
Operating condition addendum with voltage and frequency data: http://www.ti.com/lit/ug/swpu329/swpu329.pdf
Silicon revision 2.0 errata http://www.ti.com/lit/pdf/swpz037
You need the TRM if you are going deep. It used to be easier. Hopefully something in here works for you.

The boot code ON the omap is configurable to what it prioritizes eMMC, SDcard Sata and others. For the pyra. it has been set up to boot from an SDcard first so that if the eMMC were to die, you could frankenstien a fix. (28.3.3 Overall Booting Sequence)
The boot code then looks for MLO at either a section after the partition table but not part of any partition OR a file named MLO on the first partition if it is FAT formatted. (28.3.7.6.3 SD and eMMC Initialization and Detection)
MLO loads uboot.
If the lights are flashing on the Pyra, you are at least in uboot.
The red light for the "pyra" button is tied to the charger port as well, that's a special exception.

The discussion about a magic key to push to change boot order is code contained in uboot. There we could hold a shoulder button to switch boot between the emmc and the microsd card. I think it worked at one point. Not the greatest priority at this point.

Making your own setup by cloning uboot, compiling and formatting the disk is a small satisfying win. But it is challenging.
The makeSD tool I've only used to make an image for the dev board, but should make something for the Pyra if you've passed the "make me a pyra image".

Have you got a USB cable hooked up to the debug port to view the information on another computer whilst it is booting?
 
Not sure it helps, but I once compile U-Boot for the pyra. Since I don't have the device I couldn't test and didn't even install it to a card.
Well, this is all I got for now.
I'll attach a Dockerfile (edit: please remove the .txt extension, it didn't allow me to upload with the real name) if I can, which seems to be able to cross-compile an MLO, but I can't test the resulting MLO.
The problem I've had is that gcc 12 didn't want to compile the old U-Boot, and I have to change KBUILD_CFLAGS to add -msoft-float to have it compile.
I don't think it's very likely to do harm, but it seems less than optimal.
It's probably better to try this patch, but I haven't. I don't know if we want it, or want to compile as close to possible to the known good source.
Edit: or maybe before starting to cherry pick patches from later on U-Boot history, we may prefer to rebase somehow to a newer U-Boot, but that should be done by someone who can test it.
Edit: version2: just corrected some comments and moved some exported variables in a script, nothing of much consequence.
Edit: version3. Corrected more comments. Left the typo bookworn/bookworm, because I'm too lazy to rebuild the images and retest and after all, the Pyra is something you can "wear" like a book (ok, carry), isn't it ?
 
Back
Top