ASIAIR Plus (Raspberry Pi CM4 モデル) ハック

ASIAIR Plus (Raspberry Pi CM4 モデル) の OS と言ったソフトウェア的な中身を入れ替える目的で行ったハックのメモです。

注意:

  • リバースエンジニアリングの内容を含みます。この内容によって生じた如何なる不利益も責任を持ちません。
  • 個人で入手した ASIAIR Plus の Raspberry Pi CM4 (32GB)モデルに限定しています。最近の Plus である Rockchip 3568 のモデルや mini や PRO といった別のモデルでは確認していません。また、CM4 のモデルでも個体差があるかもしれません。

以降、ASIAIR Plus の Raspberry Pi CM4 モデルを ASIAIRと略します。

ASIAIR の内蔵 eMMC のマウント
  • PC と ASIAIR を USB ケーブルで接続。ASIAIR 側は PC と書かれている USB-C に繋ぐ。この時 ASIAIR は電源 OFF の状態とすること
  • PC 側で rpiboot を起動
  • ASIAIR をリセットボタンを押しながら電源 ON
  • PC 側で ASIAIR の eMMC 全体がストレージとして認識されます。
$ rpiboot 
RPIBOOT: build-date Jan 31 2022 version 0~20220315+git6fa2ec0+nowin-0ubuntu1 
Waiting for BCM2835/6/7/2711...
Loading embedded: bootcode4.bin
Sending bootcode.bin
Successful read 4 bytes 
Waiting for BCM2835/6/7/2711...
Loading embedded: bootcode4.bin
Second stage boot server
Loading embedded: start4.elf
File read: start4.elf
Second stage boot server done
$

dmesg

[ 9851.637490] usb 1-4: new high-speed USB device number 29 using xhci_hcd
[ 9851.785809] usb 1-4: config index 0 descriptor too short (expected 55, got 32)
[ 9851.786210] usb 1-4: New USB device found, idVendor=0a5c, idProduct=2711, bcdDevice= 0.00
[ 9851.786224] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 9851.786231] usb 1-4: Product: BCM2711 Boot
[ 9851.786237] usb 1-4: Manufacturer: Broadcom
[ 9851.786243] usb 1-4: SerialNumber: xxxxxxxx
[ 9853.893651] usb 1-4: USB disconnect, device number 29
[ 9861.661604] usb 1-4: new high-speed USB device number 30 using xhci_hcd
[ 9861.810106] usb 1-4: New USB device found, idVendor=0a5c, idProduct=2711, bcdDevice= 0.00
[ 9861.810120] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=4
[ 9861.810128] usb 1-4: Product: BCM2711 Boot
[ 9861.810133] usb 1-4: Manufacturer: Broadcom
[ 9861.810139] usb 1-4: SerialNumber: xxxxxxxx
[ 9863.152929] usb 1-4: USB disconnect, device number 30
[ 9864.805622] usb 1-4: new high-speed USB device number 31 using xhci_hcd
[ 9864.954546] usb 1-4: New USB device found, idVendor=0a5c, idProduct=0001, bcdDevice= 0.01
[ 9864.954561] usb 1-4: New USB device strings: Mfr=2, Product=1, SerialNumber=3
[ 9864.954568] usb 1-4: Product: Compute Module
[ 9864.954574] usb 1-4: Manufacturer: Raspberry Pi
[ 9864.954579] usb 1-4: SerialNumber: xxxxxxxx
[ 9864.956891] usb-storage 1-4:1.0: USB Mass Storage device detected
[ 9864.957483] scsi host7: usb-storage 1-4:1.0
[ 9865.966237] scsi 7:0:0:0: Direct-Access     RPi-MSD- 0001                  PQ: 0 ANSI: 2
[ 9865.967003] sd 7:0:0:0: Attached scsi generic sg7 type 0
[ 9865.967706] sd 7:0:0:0: [sdg] 61071360 512-byte logical blocks: (31.3 GB/29.1 GiB)
[ 9865.968132] sd 7:0:0:0: [sdg] Write Protect is off
[ 9865.968140] sd 7:0:0:0: [sdg] Mode Sense: 0f 00 00 00
[ 9865.968304] sd 7:0:0:0: [sdg] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA

要するに ASIAIR は CM4 の nRPI_BOOT の PIN が Reset ボタンと繋がれているようです。

www.raspberrypi.com

ここまで来れば Raspberry Pi4 のモデルだった ASIAIR Pro の MicroSD と同じです。例えば ROOTFS/root/.ssh/authorized_keys を置いて root で ssh と言ったことも可能になります。

ASIAIR のシステムを入れ替える

ZWO 縛りがある ASIAIR のソフトウェアに個人的に用は無いので。

USB3

ASIAIR の USB3 は PCIe 経由で接続されている Renesas の μPD720201 が内蔵されていますが Raspberry Pi OS で配布されている default kernel では動作しません。

$ lspci 
00:00.0 PCI bridge: Broadcom Inc. and subsidiaries BCM2711 PCIe Bridge (rev 20)
01:00.0 USB controller: Renesas Technology Corp. uPD720201 USB 3.0 Host Controller (rev 03)
$ lsusb 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$

なので kernel の設定を変更して

CONFIG_USB_XHCI_PCI_RENESAS=m

再構築し、firmware ファイルを /lib/firmware/renesas_usb_fw.mem に置いて reboot します。

[    6.514335] xhci-hcd fe9c0000.xhci: new USB bus registered, assigned bus number 1
[    6.514603] xhci-hcd fe9c0000.xhci: USB3 root hub has no ports
[    6.514621] xhci-hcd fe9c0000.xhci: hcc params 0x0220fe65 hci version 0x110 quirks 0x0000000000010010
[    6.514703] xhci-hcd fe9c0000.xhci: irq 34, io mem 0xfe9c0000
...
$ lsmod |grep xhci
xhci_pci               24576  0
xhci_pci_renesas       16384  1 xhci_pci
 $ lsusb 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 002: ID 05e3:0761 Genesys Logic, Inc. Genesys Mass Storage Device
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$

無事認識しました

12V 電源制御周り

ON/OFF は GPIO 18,12,13,26 で制御、電流電圧センサーは I2C に繋がれています。

$ i2cdetect -l 
i2c-0   i2c         i2c-22-mux (chan_id 0)              I2C adapter
i2c-1   i2c         bcm2835 (i2c@7e804000)              I2C adapter
i2c-10  i2c         i2c-22-mux (chan_id 1)              I2C adapter
i2c-20  i2c         fef04500.i2c                        I2C adapter
i2c-21  i2c         fef09500.i2c                        I2C adapter
i2c-22  i2c         bcm2835 (i2c@7e205000)              I2C adapter
$ i2cdetect -y 10
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- 48 49 -- 4b -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --         

ekos/kstars の indi-3rdparty にある indi-asi-power で値を参照、制御できます。