BC-11AH-CM4-ASKEY の使用開始手順

Posted by: otsuka

BC-11AH-CM4-ASKEY に Raspberry Pi Compute module 4 を装着して使用を開始するための手順を説明します。

BC-11AH-CM4-ASKEY は eMMC 内蔵タイプの、 lite 版でない方の Compute Module 4 (以後 CM4 と書きます)
を装着して使用する前提で設計されています。

CM4 は eMMC には何も書き込まれていない状態で販売されており、
使用する際にはRasspberry Pi 純正の Compute Module 4 IO boardWaveshare Electronics の IO Board
各種ベースボードなどに装着して
Raspberry Pi OS などの OS イメージを eMMC に書き込む必要があります。

BC-11AH-CM4-ASKEY にも 純正 CM4 IO Board と同じく
eMMC への書き込みを実行できるモードへの切り替え機能を用意してありますので、
BC-11AH-CM4-ASKEY を使って CM4 に OS イメージを書き込む手順を紹介します。


まず BC-11AH-CM4-ASKEY にヒートシンクなど冷却装置を取り付け済みの CM4 を取り付けます。
CM4 を取り付けるヒロセ製コネクタのすぐ脇に CN10 というジャンパピンがあります。
これは純正 CM4 IO Board の JP2 と同じ信号線を引き出してあるもので、
このピンをジャンパでショートさせると eMMC からの起動が無効になります。

この状態で CN2 の USB-A と OS 書き込み作業用 Linux PC の USB-A を
BC-11AH-CM4-ASKEY 書き込み作業専用ケーブルで接続します。
この BC-11AH-CM4-ASKEY 書き込み作業専用ケーブル は両端とも USB-A コネクタを備え
かつ USB バス電源を接続していないものです。

BC-11AH-CM4-ASKEY に USB-C 給電ケーブルで電源を投入すると、
OS 書き込み作業用の Linux PC では dmesg に以下のようなログが現れ、
[435436.129183] usb 3-4: new high-speed USB device number 10 using xhci_hcd
[435436.278541] usb 3-4: config index 0 descriptor too short (expected 55, got 32)
[435436.280527] usb 3-4: New USB device found, idVendor=0a5c, idProduct=2711, bcdDevice= 0.00
[435436.280535] usb 3-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[435436.280539] usb 3-4: Product: BCM2711 Boot
[435436.280543] usb 3-4: Manufacturer: Broadcom
[435436.280546] usb 3-4: SerialNumber: 862f8513
BCM2711 Boot として認識されます。

Raspberry Pi usbboot (RPIBOOT)
https://github.com/raspberrypi/usbboot
を作業用 Linux PC にダウンロードしビルドします。
beat@halow-dev:~$ git clone https://github.com/raspberrypi/usbboot
beat@halow-dev:~$ cd usbboot
beat@halow-dev:~/usbboot$ make
xxd -i msd/bootcode.bin > msd/bootcode.h
xxd -i msd/start.elf > msd/start.h
xxd -i msd/bootcode4.bin > msd/bootcode4.h
cc -Wall -Wextra -g   -o rpiboot main.c bootfiles.c decode_duid.c `pkg-config --cflags --libs libusb-1.0` -DGIT_VER="\"101f2d00\"" -DPKG_VER="\"local\"" -DBUILD_DATE="\"2026/02/17\"" -DDEFAULT_MSG_DIR=\"/usr/share/rpiboot/mass-storage-gadget64/\" 

beat@halow-dev:~/usbboot$ ls
LICENSE    bootfiles.c    docs          main.c                     msd         rpi-imager-embedded  secure-boot-recovery   win32
Makefile   bootfiles.h    eeprom-erase  mass-storage-gadget        recovery    rpiboot              secure-boot-recovery5
Readme.md  decode_duid.c  firmware      mass-storage-gadget64      recovery5   secure-boot-example  test
bin2c.c    decode_duid.h  fmemopen.c    mass-storage-gadget64-cm3  rpi-eeprom  secure-boot-msd      tools

make でビルドされた rpiboot コマンドを以下のようなオプションで実行します。
beat@halow-dev:~/usbboot$ sudo ./rpiboot -d mass-storage-gadget
[sudo] beat のパスワード: 
RPIBOOT: build-date 2026/02/17 pkg-version local 101f2d00

Please fit the EMMC_DISABLE / nRPIBOOT jumper before connecting the power and USB cables to the target device.
If the device fails to connect then please see https://rpltd.co/rpiboot for debugging tips.

Loading: mass-storage-gadget/bootfiles.bin
Using mass-storage-gadget/bootfiles.bin
Waiting for BCM2835/6/7/2711/2712...

Sending bootcode.bin
Successful read 4 bytes 
Waiting for BCM2835/6/7/2711/2712...

Second stage boot server
File read: mcb.bin
File read: memsys00.bin
File read: memsys01.bin
File read: memsys02.bin
File read: memsys03.bin
File read: memsys04.bin
File read: memsys05.bin
File read: memsys06.bin
File read: memsys07.bin
File read: memsys08.bin
File read: bootmain
Loading: mass-storage-gadget/config.txt
File read: config.txt
Loading: mass-storage-gadget/boot.img
File read: boot.img
Second stage boot server done
USB 経由で CM4 に mass stoage gadget として起動するためのイメージが送られ、
CM4 内部の eMMC が maicroSD カードや USB フラッシュメメモリのように
/dev/sda として OS 書き込み作業用 Linux PC に認識されます。

この際の OS 書き込み作業用 Linux PC の dmesg には以下のログが現れます。
[440518.701806] usb-storage 3-4:1.0: USB Mass Storage device detected
[440518.702069] scsi host10: usb-storage 3-4:1.0
[440518.703177] cdc_acm 3-4:1.1: ttyACM0: USB ACM device
[440519.712917] scsi 10:0:0:0: Direct-Access     mmcblk0                        PQ: 0 ANSI: 2
[440519.713273] sd 10:0:0:0: Attached scsi generic sg0 type 0
[440519.713431] sd 10:0:0:0: Power-on or device reset occurred
[440519.713614] sd 10:0:0:0: [sda] 61071360 512-byte logical blocks: (31.3 GB/29.1 GiB)
[440519.847189] sd 10:0:0:0: [sda] Write Protect is off
[440519.847195] sd 10:0:0:0: [sda] Mode Sense: 0f 00 00 00
[440519.979356] sd 10:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[440520.244138]  sda: sda1 sda2
[440520.507391] sd 10:0:0:0: [sda] Attached SCSI removable disk
[440520.869893] FAT-fs (sda1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
[440520.901285] EXT4-fs (sda2): recovery complete
[440520.902108] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null). Quota mode: none.

OS 書き込み作業用の Linux として Ubuntu の Desktop Version を使っている場合は
自動で mount まで実行されます。
beat@jetson-dev:~/Works/usbboot$ mount | grep sda
/dev/sda1 on /media/beat/bootfs type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)
/dev/sda2 on /media/beat/rootfs type ext4 (rw,nosuid,nodev,relatime,uhelper=udisks2)
この状態になったら Raspi OS Imager や dd コマンドで OS イメージを書き込むことができます。
BC-11AH-A/A2用設定済み起動イメージファイル2025.11 Release の設定手順などを参照して
OS イメージの書き込みを行なってください。

OS イメージの書き込みが完了したら CN10 のジャンパを外して元の状態に戻し、
LANケーブルなど必要な周辺機器を接続して
CN6 の PWR-IN に USB 給電で電源を供給して起動します。


eMMC に OS イメージを書き込んで設定済みの CM4 の eMMC を再度 Linux PC にマウントする場合も
上記の手順でダウンロード済みの rpiboot を sudo ./rpiboot -d mass-storage-gadget で実行すると
作業用 Linux PC にマウントされます。
OS イメージの dump や部分的なファイルの backup コピーなどに使用できます。


BC-11AH-CM4-ASKEY で周辺機器を使用する際には、
Raspberry Pi OS に以下のような設定が必要になります。

HDMI コネクタを実装した場合はディスプレイを利用できますが、
EDID による解像度設定はうまく働かないので
/boot/config.txt に以下の設定が必要です。
# uncomment if hdmi display is not detected and composite is being output
hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
hdmi_group=2
hdmi_mode=82
hdmi_mode=82 は 1920x1080 60Mhz です。
使用するディスプレイに応じて適切な値を設定してください。
設定可能な値の一覧は
https://elinux.org/RPiconfig#Video
などを参照してください。

UART をシリアルコンソールとして使用し Linux の boot console にするには
/boot/cmdline.txt を以下のようにします。
console=tty1 console=serial0,115200 root=PARTUUID=af68b02b-02 rootfstype=ext4 fsck.repair=yes rootwait

USB-A ポートは一つしか設けていませんので
マウスとキーボードを同時に接続する場合は USB ハブを利用してください。

RTC は基板上の CN1 に CR1220 を装着し、
/boot/config.txt に以下を追加してください。
dtparam=i2c_vc=on
dtoverlay=i2c-rtc,pcf85063a,i2c_csi_dsi