Visualizing Pi...


So, I bought a Raspberry Pi 3 recently, and since I had no immediate plans to dabble in hardware-hacking, went with the official starter kit, so that I’d get a known tested international power supply, a decent case, and a cute little compact keyboard. (also a three-button mouse and an HDMI cable)

Everything worked perfectly out of the box, including auto-detecting the 1920x1200 resolution of my little Eyoyo 10″ monitor. Then I ran the software updates, rebooted, and poof, no more display. After confirming that the Pi still booted, grabbing the latest image, and booting in safe mode, I discovered that the only way to get a fully-updated Raspbian Jessie or Stretch install to show video on the Eyoyo was to add something like this to /boot/config.txt:

hdmi_force_hotplug=1 #insist there's a monitor there
hdmi_ignore_edid=0xa5000080 # don't query the monitor
hdmi_group=2 # use monitor-style resolutions
hdmi_mode=69 # use 1920x1200, 60Hz
hdmi_drive=2 # turn on HDMI audio

But then I can’t plug it into anything else without either blindly booting to safe mode or ssh-ing in, changing the config, and rebooting. After a fruitless (heh) search of forums and FAQs, I went through the download archives and found the first Jessie release after the Pi 3 came out (2016-02-26). It worked perfectly. A quick binary search between that and the last Jessie release revealed that the last release that correctly auto-detected my monitor was 2017-01-11. None of the Stretch releases work, and the release notes for Jessie 2017-02-16 don’t have anything that screams “hey we broke the EDID parsing”.

But that appears to be what they did. Adding one line to my config re-enabled auto-detection on the Eyoyo:

avoid_edid_fuzzy_match=1

It came up as 720p, but that’s better than “blank”. Adding this commonly-FAQd line brought it to a more reasonable 1680x1050, while still allowing it to work with other monitors:

hdmi_group=2

So, a quite pleasant out-of-the-box experience, a disaster of an update, and the recovery process boils down to “mount the SD card on your PC/Mac, Google for help, then blindly tinker with /boot/config.txt until you get it working again.”

I suppose this is one way to find all the future sysadmins in your fifth-grade classroom…

I do have one specific project in mind for work. Now that we’re in a new building with lots and lots of windows, I should be able to get a decent view of the sky and build Pi-based stratum 1 ntp servers.

Oh, and I named it Mone. Because inside every Pi is delicious cake.

Update

I just installed FreeBSD 12-CURRENT, which doesn’t support wireless, but gave me a completely different OS to test against. It bootstraps itself using the same sort of config.txt, and sure enough, it also requires setting avoid_edid_fuzzy_match=1 to work with my monitor.

Update 2

Just to round things out, I installed Ubuntu MATE as well, and since it’s not as up-to-date as Raspbian, it auto-detects fine. It’s subtly broken in the typical Ubuntu way (can’t run the GUI software updater, and updating from CLI broke several things, including Firefox), so I won’t use it for anything. I expect that it’ll pick up the EDID bug in the next release.

By the way, I’m booting all this stuff off of a 5-pack of 16GB MicroSD cards, stored in this cute little holder. This little Anker USB3 card reader is the fastest and most useful I’ve found for imaging MicroSD cards and mounting the /boot partition to fix the config file.

Update 3

So, OpenSUSE has a 64-bit build. It installed cleanly, so I let it run a whole bunch of updates, and then I decided to see if the performance was better for things like watching video. So I opened up Firefox and went to Youtube. Or, more precisely, I tried to go to Youtube, because Firefox absolutely refused to open the page, claiming that it used outdated encryption that was evil and fattening and probably voted for Trump. There appears to be no way to say, “just fucking open the site, okay?”.


Comments via Isso

Markdown formatting and simple HTML accepted.

Sometimes you have to double-click to enter text in the form (interaction between Isso and Bootstrap?). Tab is more reliable.