Raspberry PiのLinux KernelでMedia Controller APIを無効にする
環境
Raspberry Pi 4B
Raspberry Pi OS
Linux raspberrypi 5.15.84-v8+ #1613 SMP PREEMPT Thu Jan 5 12:03:08 GMT 2023 aarch64 GNU/Linux
OV5647モジュールを接続済み
問題
/dev/video0 に設定されているイメージセンサーを確認するためにv4l2-ctlやqv4l2を使っても思い通りの動作をしなかった
例:
$ v4l2-ctl -d /dev/video0 --list-ctrls *何も出力されない* $ v4l2-ctl -d 0 --list-formats-ext ioctl: VIDIOC_ENUM_FMT Type: Video Capture [0]: 'YUYV' (YUYV 4:2:2) Size: Stepwise 16x16 - 16376x16376 with step 1/1 [1]: 'UYVY' (UYVY 4:2:2) Size: Stepwise 16x16 - 16376x16376 with step 1/1 ... *なんか違いそうなのが出力されてる*
config.txt 変更
Media Controller APIがデフォルトで有効になっているので無効にする
/boot/config.txt 内の [pi4] の [all] 欄に以下を追加
[all] camera_auto_detect=0 dtoverlay=ov5647,media-controller=0
config.txt 変更後
v4l2-ctl
$ v4l2-ctl -d /dev/video0 --list-ctrls User Controls white_balance_automatic 0x0098090c (bool) : default=0 value=0 exposure 0x00980911 (int) : min=4 max=500 step=1 default=500 value=500 gain_automatic 0x00980912 (bool) : default=0 value=0 horizontal_flip 0x00980914 (bool) : default=0 value=0 flags=modify-layout vertical_flip 0x00980915 (bool) : default=0 value=0 flags=modify-layout Camera Controls auto_exposure 0x009a0901 (menu) : min=0 max=1 default=1 value=1 ... $ v4l2-ctl -d /dev/video0 --list-formats-ext ioctl: VIDIOC_ENUM_FMT Type: Video Capture [0]: 'pGAA' (10-bit Bayer GBGB/RGRG Packed) Size: Discrete 2592x1944 Size: Discrete 1920x1080 Size: Discrete 1296x972 Size: Discrete 640x480 [1]: 'GB10' (10-bit Bayer GBGB/RGRG) Size: Discrete 2592x1944 Size: Discrete 1920x1080 Size: Discrete 1296x972 Size: Discrete 640x480
...なんでかGBRGとして認識されてる
OV5647はBGGR配列
qv4l2
次?
media-ctl操作してMedia Controller API経由のキャプチャ(できたらいいな...)
参考
raspbian - libcamera stack does not work with Bullseye - Raspberry Pi Stack Exchange
linux/README at rpi-5.15.y · raspberrypi/linux · GitHub
https://manpages.debian.org/stretch/v4l-utils/v4l2-ctl.1
RockPi 4B Camera IFを通してOV5647 I2Cの接続確認をする
環境
RockPi 4B v1.5
OV5647モジュール(初代RPi Cameraとコンパチだと思う)
6.1.2-1-MANJARO-ARM
回路チェック
ちょい古いv1.3基板の回路図ですが、Camera IFはJ1に配置されていてI2C4が接続されているようです。
https://dl.radxa.com/rockpi4/docs/hw/rockpi4/rockpi4_v13_sch_20181112.pdf
また、CAM_GPIO1はGPIO1_B5に接続されています。
このCAM_GPIO1は回路図が公開されているRaspberry Pi Camera V2(IMX219)と同じ使い方であればおそらくカメラモジュール内の各レギュレータのENピンに接続されています。
https://datasheets.raspberrypi.com/camera/camera-module-2-schematics.pdf
HighでEnable状態になります。
実際にi2cdetect
RockPi 4B (RK3399) GPIO NameからGPIO Numberを求める - かっこいいブログタイトル
GPIO1_B5のピン番号は上記の計算式より 1*32+1*8+5 = 45
となります。
cd /sys/class/gpio/ sudo sh -c "echo 45 > export" sudo sh -c "echo out > gpio45/direction" sudo sh -c "echo 1 > gpio45/value"
これで電源供給がおそらく有効になったのでi2cdetectでプローブしてみます。
sudo i2cdetect -y 4 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- 36 -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
ちゃんと0x36に存在確認できました。
参考
RockPi 4B (RK3399) GPIO NameからGPIO Numberを求める
Example: GPIO4_D5: 4*32+3*8+5 = 157
Port ID
A: 0, B: 1, C: 2, D: 3
6.1.2-1-MANJARO-ARM で確認
ASUS P513 ROG KERIS WIRELESS Teardown
出たばっかりのROG Keris Wirelessをバラしてみたので公開
マウス自体のレビューはもう既にされてる方が複数いらっしゃるのでナシ
特に動作、ファームウェアアップデートに不具合は無かったけれど、制御ソフトのArmoury Crateのインストールが上手く行かなかったり(何回か試したら行けましたが)した。
分解時のメモ
基板の取り外しにはT5トルクスドライバーが必要。
また、両面テープで固定されているバッテリーを剥がす必要があるのでオススメできません。多分保証も効かなくなります。
分解
メイン基板
主な実装部品
サイドスイッチ
- Kailh製
ホイールエンコーダ
- Kailh製
ホイールクリックスイッチ
- 詳細不明
- STMicroelectronics製
- ARM Cortex-M4F
- USBコネクション用
- メインMCU?
- Texas Instruments製
- ARM Cortex-M3, M0
- RFファンクション
- 2.4GHz接続及びBluetooth Low Energy接続用
光学センサ: PAW3335DB
- PixArt製
バッテリーマネジメントIC: MP2625B
- Monolithic Power System製
技適
当たり前ですが、ドングル、マウス本体ともに技適マークと工事設計認証番号の記載が成されていました。
- ドングル: 201-200462
- マウス: 201-200673
感想
この2つのMCUの組み合わせってワイヤレスマウスだとしてもOPな気がするけど、どうなんですかね。
中でどんなソフトが動いてるか分からないので何とも言えませんが・・・
デバッグ用のパッドは出てるのでめちゃくちゃ暇だったら試しに見てみるかもしれない。