Preparing for a Prototype


It took me a bit to work through and combine what aTc said above with how I know that the process works from having done it a few times. I thought it might help the other Pyra prototype owners if I made a stepwise instructions set for installing the OS fresh to the eMMC card. If it doesn't, then the only time I wasted was my own.

Stepwise instructions to updating the eMMC on a Pyra Prototype using a Linux workstation.
1. Download file pyra-install.img.zip from 2. Extract file pyra-install.img.
3. Open a root prompt in a terminal. #
4. Navigate to the folder where you have extracted the file pyra-install.img.
5. Insert an SD card in a reader into a USB drive on the workstation.
6. fdisk -l to list the disk devices on your Linux workstation. In my case the target SD card in a USB reader is /dev/sdj. MAKE SURE YOU GET THIS RIGHT! The next step could overwrite your main OS on the workstation if you get the wrong device!
7. dd if=./pyra-install.img of=/dev/sdj bs=1M; sync Wait for the sync to complete and return to the # prompt.
8. Open a file manager. If you see a drive called PYRAINSTALL, tell the file manager to eject this. When told that it is safe to do so, remove the media from the workstation.
9. Power down your Pyra. Remove ALL media from the SD slots.
10. Insert this newly created SD card into the Pyra.
11. Power on the Pyra. Wait. Eventually you will come to a prompt to press any key to power down the Pyra. Touch the space button. Pyra powers down.
12. Remove the install media from the Pyra.
13. Power on the Pyra. It should now boot from the freshly installed OS on the eMMC.
14. At the Welcome! prompt, answer Start now.
15. Calibrate Touchscreen? Yes.
16. It skips the actual touchscreen calibration and hops to a box prompting to Please enter your full name and fills it with +++++++++++ characters. Quickly click the cursor into this and hit backspace once to 'catch it'. It is filling at around 60 characters a second. Use/hold backspace then delete to get rid of this +++++++ filler.
17. Enter your name. I use 'Grench'.
18. Please choose a short username. I use 'grench'.
19. Please choose a new password. Click on the empty box and enter your preferred password. Click OK.
20. Confirm your new password. Type in the same password as on 19. Click OK.
21. Please choose a name for your Pyra. I use 'Marble'. Click OK.
22. Enable Firewall? I pick yes to this. There is a bit of a wait after entering this - give it a minute or three.
23. Geographic area: Drop down box. I pick "America" Next.
24. Time zone: This is by city, not actual time zones. It does not have to be YOUR city, just one within your time zone. For US Central Time, I choose "Chicago". Next.
25. Locales to be generated: This one has been a tripping point for some prototype owners. You do not need or want them all. By default, "de_DE_UTF-8 UTF-8" and, "en_US.UTF-8 UTF-8" and, "nl_NL_UTF-8 UTF-8" are all pre-selected. Unless you know that your language requires character sets outside of German, US English or Dutch Netherlands, you can just leave these as defaults and select "Next". IF you select 'all', then it could take 20-30 minutes before you get to step 30. Most of us should just select, Next.
26. Default locale for the system environment: This defaults to en_US.UTF-8. Since that is my locale, I simply leave it and select, Next. This takes about a half minute per locale that you selected. By default about a minute and a half. Be patient.
27. Done! select OK. Your Pyra will shut down. Give it a good 30 seconds after it shuts down.
28. Power on.
29. Your user name should be pre-selected. Enter your password. Select Log In.
30. Connect to WiFi. Hover the mouse pointer over the icon of one screen behind the other - should be just to the left of the partially blue battery icon. Left click on this icon by moving the right nub to the left with the cursor over the icon. Your local wireless network should be in the list. Hover over it and left click on it. It will prompt for a password if one is configured on the router. Left click 'Connect'.

Now to take care of getting the 'extras' and uboot set up right.
31. On the Pyra, right click on the desktop, left click on "Open in Terminal". This should open a command line terminal. In my case the prompt is grench@Marble:~/Dexktop$.
32. Type in the command, sudo su This will prompt for a sudo password for your user name. It is the same password you used to login. Enter it, it will be masked. No characters or *s will appear on the screen, but characters will be registered.
33. You should now have a prompt that on my screen looks like: root@Marble:/home/grench/Desktop# Yours will vary from that.
34. Type in the command: apt install pyra-meta-extra This was not needed on mine though it is in the instructions above. My install was already at the newest version (0.23).
35. Type in the command: # /usr/share/pyra/scripts/pyra-install-uboot.sh /usr/share/pyra/u-boot/pyra-u-boot-4g/ /dev/mmcblk0
For the above, you might want to open a browser window so that you can copy/paste if you don't want to type the whole thing in. Accuracy is important on this.
Should look like:
Installing U-boot...
0+1 records in
0+1 records out
65548 bytes (66 kB, 64KiB) copied, 0.00262484 s, 25.0 MB/s
0+1 records in
0+1 records out
342912 bytes (343 kmB, 335 KiB) copied, 0.0134252 s, 25.5 MB/s
Done.
36. Exit the command line window. # exit $ exit
37. Left nub mouse to the Pyra icon in the lower left corner of the screen. Right nub left to select, Shut Down, confirm Shut Down.
38. Wait at least 30 seconds to make sure the exit scripts have completed.

All done. Should be ready to go.
Maybe update your post? Also no Card internally, Pyra-install-card goes into the left outer slot, point 11 -> "Power on the Pyra. The installation procedure will start on its own. Wait for ... and <do stuff> ...". Remove or spoiler points 31+
 
Maybe update your post? Also no Card internally, Pyra-install-card goes into the left outer slot, point 11 -> "Power on the Pyra. The installation procedure will start on its own. Wait for ... and <do stuff> ...". Remove or spoiler points 31+
Done.
 
One of the points in etcher's favor,, it checks what has been written
If you have older or crapier cards ....
It is a bit slow with usb2
 
Etcher has been around for quite a while long before baleno took over. i have been using it for years and several Linux youtube channels have recomended it .
 
Or:
Code:
dd if=input.img of=/dev/carddevice bs=n
diff input.img /dev/carddevice
I would suggest to add "status=progress && sync" to dd line
Code:
dd if=input.img of=/dev/carddevice bs=n status=progress && sync
diff input.img /dev/carddevice
 
  • Like
Reactions: rSl
I would suggest to add "status=progress && sync" to dd line
Code:
dd if=input.img of=/dev/carddevice bs=n status=progress && sync
diff input.img /dev/carddevice
I'd suggest using a semicolon rather than a double and. You don't really care whether dd thinks it's succeeded or not, you want to flush the buffers anyway. But thanks for the hint about status=progress, I've not tried that yet, even though these days when copying files over network shares or USB 2 links I'm more likely to use rsync with --progress rather than cp, which technically would suffice, just doesn't give me anything much until a transfer completes.
 
  • Like
Reactions: rSl
And how many people ACTUALLY do this?
>diff input.img /dev/carddevice

In the SBC community, lots of newbies don't realize how crappy most flash is,
wonder why it doesn't work so well (or not at all) Over 90% of flash is crap (for SBC),,
It IS OK for camera use or general storage
 
I'd suggest using a semicolon rather than a double and. You don't really care whether dd thinks it's succeeded or not, you want to flush the buffers anyway. But thanks for the hint about status=progress, I've not tried that yet, even though these days when copying files over network shares or USB 2 links I'm more likely to use rsync with --progress rather than cp, which technically would suffice, just doesn't give me anything much until a transfer completes.
There is also progress command which checks the progress for most file transfers (dd/cp/rsync etc.) so if you miss --progress you can run below in separate terminal
Code:
progress -M
 
Over 90% of flash is crap (for SBC),,
It IS OK for camera use or general storage
Depends on exactly how crap it is. I have a card that decided spontaneously to blank it's first 8K one day. And there certainly used to be large SD cards sold that were actually small SD card with a hacked header, and if you used those in a camera, you'd keep losing pictures.
 
Well, etcher will certainly detect fake flash, even amazon has sold fake flash,
you should ALWAYS run f3probe on a new card (or h2testw, is that name right?)
But so will the diff command, if the card is more than 25% full
The problem is when it wraps, fills up the real size rather than the lying size
But, to explain, when writing 4k or 16k, all uSD are slow, 10% speed or less
Crap cards are 1% speed, so apt-get upgrade,, well, come back tomorrow
 
Just my 2cent onthe risky dd of=/dev/sdX:
Take a look into /dev/disk/by-id/ on my systems usb and sdcards are pretty often easy to spot there. USB-xyz....
Years ago I did the dmesg trick, too. But fingers are to fast and sometimes I dd‘ed the wrong disk;-). Never happened again after I learned about by-id
 
Regarding the idea I had above for limiting CPU usage on games/applications to save battery - it looks like I'm not the only one who has had that revelation.

Nvidia is now allowing laptop mobile gamers to set an upper threshold at the GPU for 'maximum framerate'.

No, I haven't found time to try to unwind the suggestions above regarding using additional Linux apps to apportion CPU to individual applications - it looks promising though - thank you!
 
On an odd whim I tried something odd but interesting. I opened up one of my .mp4 files under FireFox. Video playback worked, but no sound. I'll have to play with that some more. Maybe I should try the same thing in Chromium.

Synaptic - Chromium - mark - apply - 12 seconds to download - ~40 seconds to install. About a minute and a quarter end to end.

Works. With sound. Not smooth. Audio and video pauses out frequently. Both cores of the CPU peg out to 100%. But, considering that it is resolving video and audio all in software - pretty cool that it works at all. I wonder what it will take to get H.264 decode working properly?

Does this help anyone with ideas for getting H.264 decode running?
https://e2e.ti.com/support/legacy_f...=e2e-sitesearch&keymatch=h.264%252520omap5432
 
Last edited:
I think the installed FireFox is missing some codecs, as some Youtube-Videos have sound, others not.
 
If you have ffprobe installed (it's part of package ffmpeg in arch at least) then you can figure out what format the audio stream actually is in.
#apt install ffmpeg
ffprobe Stargate_SG1_S1_DVD01_1_1-25_RF20_.mp4
Switching to Pyra to load the pages of output in copy/paste...

root@Marble:/media/grench/PanMedia/Videos/TV/Stargate# ffprobe Stargate_SG1_S1_DVD01_1_1-25_RF20_.mp4
ffprobe version 4.1.4-1~deb10u1 Copyright (c) 2007-2019 the FFmpeg developers
built with gcc 8 (Debian 8.3.0-6)
configuration: --prefix=/usr --extra-version='1~deb10u1' --toolchain=hardened --libdir=/usr/lib/arm-linux-gnueabihf --incdir=/usr/include/arm-linux-gnueabihf --arch=arm --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Stargate_SG1_S1_DVD01_1_1-25_RF20_.mp4':
Metadata:
major_brand : mp42
minor_version : 512
compatible_brands: isomiso2avc1mp41
creation_time : 2017-05-13T04:16:39.000000Z
encoder : HandBrake 0.10.5 2017031700
Duration: 01:36:57.27, start: 0.000000, bitrate: 1172 kb/s
Chapter #0:0: start 0.000000, end 337.837000
Metadata:
title : Chapter 1
Chapter #0:1: start 337.837000, end 555.513000
Metadata:
title : Chapter 2
Chapter #0:2: start 555.513000, end 697.739000
Metadata:
title : Chapter 3
Chapter #0:3: start 697.739000, end 983.608000
Metadata:
title : Chapter 4
Chapter #0:4: start 983.608000, end 1343.717000
Metadata:
title : Chapter 5
Chapter #0:5: start 1343.717000, end 1592.174000
Metadata:
title : Chapter 6
Chapter #0:6: start 1592.174000, end 1704.536000
Metadata:
title : Chapter 7
Chapter #0:7: start 1704.536000, end 2075.073000
Metadata:
title : Chapter 8
Chapter #0:8: start 2075.073000, end 2300.840000
Metadata:
title : Chapter 9
Chapter #0:9: start 2300.840000, end 2484.440000
Metadata:
title : Chapter 10
Chapter #0:10: start 2484.440000, end 2690.396000
Metadata:
title : Chapter 11
Chapter #0:11: start 2690.396000, end 2915.746000
Metadata:
title : Chapter 12
Chapter #0:12: start 2915.746000, end 3058.389000
Metadata:
title : Chapter 13
Chapter #0:13: start 3058.389000, end 3262.926000
Metadata:
title : Chapter 14
Chapter #0:14: start 3262.926000, end 3595.759000
Metadata:
title : Chapter 15
Chapter #0:15: start 3595.759000, end 3871.367000
Metadata:
title : Chapter 16
Chapter #0:16: start 3871.367000, end 4067.689000
Metadata:
title : Chapter 17
Chapter #0:17: start 4067.689000, end 4205.660000
Metadata:
title : Chapter 18
Chapter #0:18: start 4205.660000, end 4417.371000
Metadata:
title : Chapter 19
Chapter #0:19: start 4417.371000, end 4813.434000
Metadata:
title : Chapter 20
Chapter #0:20: start 4813.434000, end 5205.534000
Metadata:
title : Chapter 21
Chapter #0:21: start 5205.534000, end 5575.111000
Metadata:
title : Chapter 22
Chapter #0:22: start 5575.111000, end 5743.529000
Metadata:
title : Chapter 23
Chapter #0:23: start 5743.529000, end 5817.145000
Metadata:
title : Chapter 24
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, smpte170m/smpte170m/bt709), 720x362 [SAR 32:27 DAR 1280:543], 653 kb/s, 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc (default)
Metadata:
creation_time : 2017-05-13T04:16:39.000000Z
handler_name : VideoHandler
Stream #0:1(eng): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, stereo, fltp, 256 kb/s (default)
Metadata:
creation_time : 2017-05-13T04:16:39.000000Z
handler_name : Stereo
Side data:
audio service type: main
Stream #0:2(eng): Audio: mp3 (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 256 kb/s
Metadata:
creation_time : 2017-05-13T04:16:39.000000Z
handler_name : Stereo
Stream #0:3(eng): Data: bin_data (text / 0x74786574)
Metadata:
creation_time : 2017-05-13T04:16:39.000000Z
handler_name : SubtitleHandler
Unsupported codec with id 100359 for input stream 3
 
Youtube videos are being encoded for both h.264+AAC and VP9+Opus, the website simply favors choosing VP9+Opus. Which is a PITA if you only have a h.264 hardware decoder, there are Firefox plugins like h264ify that will fix this.

The difference between videos that work and those that don't work might be related to whether they exist in DASH variants on the server, which basically splits the audio and video stream into separate files. It is mandatory for 60 FPS videos but probably unavailable for many older videos, especially for lower resolutions.
 
Back
Top