Many years ago, I was handed one of the openpi kickstarter devices (see https://www.kickstarter.com/projects/wirelessthings/openpi-wireless-computer-for-inventors-makers-and) after Ciseco/Wireless things had gone under and my former boss had no further use for it. The dinky keyboard (and USB dongle) was promptly snaffled by a (now retired) colleage, and I had a brief play with the board, realised it was a single core CM1 board and kinda filed it away.
I'd dug it out semi-recently to see if it could be pressed into service to run info-beamer down at the local men's shed, but I decided it probably wasn't worth the hassle and back into the box it went. Cue a spot of bench-clearing and I decided to see if it could run a current OS and work (I want some sort of RF bridge to get the RF blinds into Home Assistant and that may be a use case).
Notes which may help others in future.
WirelessThings website is long gone (there are some snapshots on archive.org) but https://github.com/WirelessThings/OpenPi/ still exists and has the schematics. Grab em if you need them.
The warning about not being able to connect to a CM1 with `rpiboot` from a mac still seems valid, but it worked great from the standard pi I have on my workbench. I grabbed the current 32 bit Pi Os lite from https://www.raspberrypi.com/software/operating-systems/ then dd'd it over to /dev/sda (the openpi has 4GB eMMC onboard) as documented at https://www.raspberrypi.com/documentation/computers/compute-module.html#flash-compute-module-emmc. There was some slight faffing as new raspbian/Pi OS images don't create the user or allow ssh in by default. Fixed up by touching the 'ssh' file while I had the image mounted on my desktop pi ("mount /dev/sda1 /mnt" for the boot partition, /dev/sda2 is the actual root volume) - I tried to be clever and edit the cloud-init files to get it to auto-update and pull my public keys from GitHub but it bombed out when loading the new video drivers. That was fixed by editing out the
# Enable DRM VC4 V3D driver
#dtoverlay=vc4-kms-v3d
#max_framebuffers=2
section in config.txt and rebooting.
I'm using a generic USB to ethernet (Realtek 8512) dongle rather than wifi, which got the device online fine, but I coun't ssh in even after adding my public keys to the pi (created by cloud-init) user. Turns out it helps if you don't have a shell of /usr/sbin/nologin.
I was hoping there'd be some magic would happen with the on-board eeprom to detect the hardware and set things up, but nope. You're going to need to edit the config.txt and at least add i2c and dtoverlay=i2c-rtc,ds1307 for the clock.
I grabbed the overlay dts from github and compiled (complete with warnings):
root@pi-cm1:~# dtc -o /boot/overlays/openpi.dtbo openpi-overlay.dts
openpi-overlay.dts:47.17-27: Warning (reg_format): /fragment@2/__overlay__/spidev@0:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
openpi-overlay.dts:55.17-27: Warning (reg_format): /fragment@2/__overlay__/spidev@1:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
/boot/overlays/openpi.dtbo: Warning (pci_device_reg): Failed prerequisite 'reg_format'
/boot/overlays/openpi.dtbo: Warning (pci_device_bus_num): Failed prerequisite 'reg_format'
/boot/overlays/openpi.dtbo: Warning (simple_bus_reg): Failed prerequisite 'reg_format'
/boot/overlays/openpi.dtbo: Warning (i2c_bus_reg): Failed prerequisite 'reg_format'
/boot/overlays/openpi.dtbo: Warning (spi_bus_reg): Failed prerequisite 'reg_format'
openpi-overlay.dts:45.21-51.15: Warning (avoid_default_addr_size): /fragment@2/__overlay__/spidev@0: Relying on default #address-cells value
openpi-overlay.dts:45.21-51.15: Warning (avoid_default_addr_size): /fragment@2/__overlay__/spidev@0: Relying on default #size-cells value
openpi-overlay.dts:53.21-59.15: Warning (avoid_default_addr_size): /fragment@2/__overlay__/spidev@1: Relying on default #address-cells value
openpi-overlay.dts:53.21-59.15: Warning (avoid_default_addr_size): /fragment@2/__overlay__/spidev@1: Relying on default #size-cells value
/boot/overlays/openpi.dtbo: Warning (avoid_unnecessary_addr_size): Failed prerequisite 'avoid_default_addr_size'
/boot/overlays/openpi.dtbo: Warning (unique_unit_address): Failed prerequisite 'avoid_default_addr_size'
One reboot later (after enabling my overlay in config.txt) and it's not obviously better.
Features this carrier is supposed to have:
SRF RF board
Bluetooth LE
dtoverlay=uart1,txd1_pin=40,rxd1_pin=41
IR Receiver
i2c - LIRC config needed but config.txt suggests
dtoverlay=lirc-rpi,gpio_in_pin=35,gpio_out_pin=33
Datasheet at https://www.vishay.com/docs/82496/tsop752w.pdf
lirc package wanted to bring in hundreds of dependencies so not investigated more
RTC
Temp sensor
GPIO Button
HAT EEPROM
GPIO Headers on the underside