Tapo H500
Spec
SoC: SigmaStar SSR920G
DRAM: 128 MiB
eMMC: 14.6 GiB (from kprintf)
Baudrate: 115200
好きな rootfs で起動させる方法
1. 分解する
2. UART を引き出す
基板裏のシールド右下にある
TX と RX は直列の 0Ω が unmount されているので、0Ω 上側のランドに直接はんだ付けするか、はんだでブリッジさせてから TP7, TP8 に結線する
3. UART を PC で開く
4. 電源コネクタを接続して電源を入れ、その瞬間に eMMC の信号が流れる抵抗と周囲の銀色のシールド間をピンセットでつまんで eMMC の読み取り動作を壊す(下図)
5. U-Boot がエラーにより shell に fallback する
IPL g9154ea4D-27HW ResetMCP1866_4Xmiupll_468MHz1024MBBIST0_0001-OKGIC InitLoad IPL_CUST from EMMCChecksum OK IPL_CUST g9154ea4Load UBOOT from EMMCu32RunAddr = 0x23e00000laodaddr = 0x23d00000 U-Boot 2015.01 (Feb 07 2025 - 17:09:24) Version: M6##g4bf9b3fI2C: readyDRAM:WARNING: Caches not enabledMMC:board_emmc_init[ eMMC_pads_switch() ] 1X/4X-MOD[ eMMC_Identify() ] CMD1 try: 28h Cost:97[ eMMC_pads_switch() ] 1X/4X-MOD[ eMMC_SetBusWidth() ] set 4 bus widthau8_CID: 3F 15 1 0 41 4A 54 44 34 52eMMC 14909MBpart_type: 6(0:Unknw 6:eMMC) has_init: 1Mstar-eMMC: 0In: serialOut: serialErr: serialNet: MAC Address 00:30:1B:BA:02:DBAuto-Negotiation...Link Status Speed:100 Full-duplex:1sstar_emac[NM_Error](nm_lib_parsePtnIndexFile) 00597: invalid partition-index-file para id.[NM_Error](nm_lib_readPtnTable) 00707: Parsing Partition Table ... FAILED [NM_Error](nm_lib_parsePtnIndexFile) 00597: invalid partition-index-file para id.[NM_Error](nm_lib_readPtnTable) 00732: Parsing Partition Table2 ... FAILED [NM_Error](nm_api_selectBootImage) 00629: init failed. ERR:Please check the blk# or partiton name!Wrong Image Format for bootm commandERROR: can't get kernel image!SigmaStar #6. env を書き込み USB の root file system を mount して init するように向ける
env set bootargs root=/dev/ude1 console=ttyS0,1152007. ブートを継続する
run bootcmdログイン
Linux kernel に入って以降も UART TX は機能しているが RX が塞がれる?のでシリアルコンソールではログインできない。事前に sshd と NetworkManager を有効化した適当な distro の root file system を用意して起動させ、SSH 経由でログインする。筆者は SHARP Brain x1 向けの rootfs (sdimage-x1-2024-12-23-202715.img の ext4) を使った。
次回起動時以降も hacked rootfs で起動させる方法 (未検証)
/dev/mmcblk0 の 0x4f000 にある U-Boot の env に上記 cmdline の変更を書き込んで env を永続化させる
root= を SATA で接続されたディスクのパーティションにすればおk?