raspi-board Unknown board revision – Pi Overclock
As I explained in my post about buying a Raspberry Pi 2, I had issues trying to get Citrix Gateblu working on my Raspberry Pi Model B. One issue was simply that Gateblu was planning on using the physical pins 12 and 34, which on the 26 pin header of my original Pi was impossible, but fixed by simply changing the assignment. However it wasn’t quite so simple, I had another issue to solve first.
Unknown Board Revision
Upon booting into the GateBlu image I was greeted with the messages below:
pi@raspberrypi ~ $ Can't get device info: No such device [1438369527:4044] NOTICE: Server listening on 127.0.0.1:7890 /home/pi/meshblu-johnny-five-rpi/node_modules/raspi-io/node_modules/raspi-board/ lib/index.js:356 throw new Error("Unknown board revision " + rev); ^ Error: Unknown board revision 100000e at Object.<anonymous> (/home/pi/meshblu-johnny-five-rpi/node_modules/raspi-io/node_modules/raspi-board/lib/index.js:356:11) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:364:17) at require (module.js:380:17) at Object.<anonymous> (/home/pi/meshblu-johnny-five-rpi/node_modules/raspi-i o/lib/index.js:46:19) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) > gateblu-f[email protected] start /home/pi/gateblu-forever > node command.js
The first error “Can’t get device info”… is due to the rc.local script assuming I have Bluetooth device connected. So we can ignore that. The real error is just below that where is reporting:
Error: Unknown board revision 100000e
Hmm, that’s odd as the Model B is meant to be supported by raspi-board. Looking in: /home/pi/meshblu-johnny-five-rpi/node_modules/raspi-io/node_modules/raspi-board/lib/index.js
we can see the lookup list as:
const BOARD_REVISIONS = { '0002': VERSION_1_MODEL_B_REV_1, '0003': VERSION_1_MODEL_B_REV_1, '0004': VERSION_1_MODEL_B_REV_2, '0005': VERSION_1_MODEL_B_REV_2, '0006': VERSION_1_MODEL_B_REV_2, '0007': VERSION_1_MODEL_A, '0008': VERSION_1_MODEL_A, '0009': VERSION_1_MODEL_A, '000d': VERSION_1_MODEL_B_REV_2, '000e': VERSION_1_MODEL_B_REV_2, '000f': VERSION_1_MODEL_B_REV_2, '0010': VERSION_1_MODEL_B_PLUS, '0012': VERSION_1_MODEL_A_PLUS, 'a01041': VERSION_2_MODEL_B, 'a21041': VERSION_2_MODEL_B };
So I look at the code again and to see how raspi-board determining the board revision and it’s basing this on the contents of /proc/cpuinfo and pulling out the reported revision number. Sure enough my revision is as reported in the original error message: 100000e. A revision not present in the list so I quickly hacked in the additional line to list my 100000e as a: VERSION_1_MODEL_B_REV_2 which did the trick to work around the problem.
The Cause and the Fix
Why is my revision prefixed by “100” compared to the expected revision? I bit of searching and I stumbled over: http://elinux.org/RPi_HardwareHistory which stated that revision numbers that are prefixed by “1000” indicate they have been over-volted. It looks like the page is a little wrong and it’s actually “100” not “1000”. Similarly for the Pi2 a 1 will prefix the version number, as seen here: https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=98367&start=250
So reported by 1st issue: https://github.com/nebrius/raspi-board/issues/3 and was pleased to see it fixed so quickly just a few days later in version 3.3.3.
Hopefully this post will be helpful if you stumble over any other library which is determining the board revision and isn’t aware of the impact if your Pi has been overclocked.