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 ボタンと繋がれているようです。
ここまで来れば 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 で値を参照、制御できます。