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に存在確認できました。

参考

sudo で書き込みをしたい - Qiita

ASUS P513 ROG KERIS WIRELESS Teardown

出たばっかりのROG Keris Wirelessをバラしてみたので公開
マウス自体のレビューはもう既にされてる方が複数いらっしゃるのでナシ
特に動作、ファームウェアアップデートに不具合は無かったけれど、制御ソフトのArmoury Crateのインストールが上手く行かなかったり(何回か試したら行けましたが)した。

分解時のメモ

基板の取り外しにはT5トルクスドライバーが必要。
また、両面テープで固定されているバッテリーを剥がす必要があるのでオススメできません。多分保証も効かなくなります。

分解

f:id:dro_ran:20210324183553j:plain
バッテリー裏に隠しネジ
f:id:dro_ran:20210324183647j:plain
分解部品一覧

メイン基板

f:id:dro_ran:20210324182518j:plain
メイン基板 実装部品一覧

主な実装部品

サイドスイッチ

  • Kailh製

ホイールエンコーダ

  • Kailh製

ホイールクリックスイッチ

  • 詳細不明

MCU: STM32L412C8

  • STMicroelectronics製
  • ARM Cortex-M4F
  • USBコネクション用
  • メインMCU?

無線MCU: CC2640R2F

光学センサ: PAW3335DB

  • PixArt製

バッテリーマネジメントIC: MP2625B

  • Monolithic Power System製

技適

当たり前ですが、ドングル、マウス本体ともに技適マークと工事設計認証番号の記載が成されていました。
- ドングル: 201-200462
- マウス: 201-200673

感想

この2つのMCUの組み合わせってワイヤレスマウスだとしてもOPな気がするけど、どうなんですかね。
中でどんなソフトが動いてるか分からないので何とも言えませんが・・・

デバッグ用のパッドは出てるのでめちゃくちゃ暇だったら試しに見てみるかもしれない。