UJP - 技術情報1

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

Surface Go 2 のLinux-Surfaceカーネルをダウングレードする

Surface Go 2 のLinux-Surfaceカーネルをダウングレードする


概要

更新履歴

  • 2026/05/04 初版

目次

はじめに

  • Surface Go 2のカメラを擬似的にモーションセンサー/人感センサーに仕立てて使うために,Linux-Surfaceカーネルをインストールしていた.
  • しかし,3台目からカメラが認識されなくなった.
  • 状況を調べ,結果的に1台目,2台目のセットアップ後,linux-surfaceカーネルがバージョンアップされ,それが原因で認識されなくなったことが判明.
  • よって,問題なく動作したバージョンにダウングレードして,これ以降,バージョンアップされない様に固定化した.
  • 調査手順の記録,設定をこの文書で掲載する.

Surfaceの内蔵カメラが認識されない

$ cam --list 2>&1 | grep -i camera🆑
[0:01:41.967085342] [1196]  INFO Camera camera_manager.cpp:284 libcamera v0.2.0
Available cameras:
ujpadmin@okachimachi:~$
  • カメラがリストされないのでカメラを認識してない.
  • libcameraを確認する.
ujpadmin@okachimachi:~$ ls /usr/lib/x86_64-linux-gnu/libcamera/🆑
ipa_ipu3.so  ipa_ipu3.so.sign  ipa_vimc.so  ipa_vimc.so.sign  ipu3_ipa_proxy  vimc_ipa_proxy
ujpadmin@okachimachi:~$
  • インストールされている.

/dev/mediaへのアクセス権

  • 詳細なログを表示.
ujpadmin@okachimachi:~$ cam --list 2>&1 | head -30🆑
[0:06:24.203516283] [1348]  INFO Camera camera_manager.cpp:284 libcamera v0.2.0
[0:06:24.211848127] [1352] ERROR MediaDevice media_device.cpp:483 /dev/media1[]: Failed to open media device at /dev/media1: Permission denied🈁
[0:06:24.211882348] [1352]  INFO DeviceEnumerator device_enumerator.cpp:224 Unable to populate media device /dev/media1 (Permission denied), skipping
[0:06:24.211902058] [1352]  WARN DeviceEnumerator device_enumerator_udev.cpp:174 Failed to add device for '/sys/devices/pci0000:00/0000:00:05.0/media1', skipping
[0:06:24.213465598] [1352] ERROR MediaDevice media_device.cpp:483 /dev/media0[]: Failed to open media device at /dev/media0: Permission denied🈁
[0:06:24.213488780] [1352]  INFO DeviceEnumerator device_enumerator.cpp:224 Unable to populate media device /dev/media0 (Permission denied), skipping
[0:06:24.213506683] [1352]  WARN DeviceEnumerator device_enumerator_udev.cpp:174 Failed to add device for '/sys/devices/pci0000:00/0000:00:14.3/media0', skipping
Available cameras:
ujpadmin@okachimachi:~$
  • /dev/media0と/dev/media1へのアクセス権がない.
  • 確認する.
ujpadmin@okachimachi:~$ ls -la /dev/media*🆑
crw-rw---- 1 root video 237, 0 May  3 19:02 /dev/media0
crw-rw---- 1 root video 237, 1 May  3 19:02 /dev/media1
ujpadmin@okachimachi:~$
  • グループに入っているか確認.
ujpadmin@okachimachi:~$ groups server🆑
server : server adm cdrom sudo dip plugdev lxd
ujpadmin@okachimachi:~$
  • serverユーザがvideoグループに入ってない.
  • 追加する.
ujpadmin@okachimachi:~$ sudo usermod -aG video server🆑
ujpadmin@okachimachi:~$
  • serverユーザをログアウトして,再度ログインする.
ujpadmin@okachimachi:~$ groups🆑
server adm cdrom sudo dip video🈁 plugdev lxd
ujpadmin@okachimachi:~$
  • videoグループに所属できた.
  • カメラ一覧をリストする.
ujpadmin@okachimachi:~$ cam --list 2>&1 | grep -i camera🆑
[0:08:09.466732948] [1435]  INFO Camera camera_manager.cpp:284 libcamera v0.2.0
Available cameras:
ujpadmin@okachimachi:~$
  • 権限は解決したが,まだ認識されてない.

カーネルがカメラを認識しているか確認.

  • カーネルメッセージを確認.
ujpadmin@okachimachi:~$ sudo dmesg | grep -i -E "ipu3|ov8865|ov5693|cio2|camera"🆑
[sudo] password for server:🔑
[    8.544372] ipu3_imgu: module is from the staging directory, the quality is unknown, you have been warned.
[    8.554023] ipu3-imgu 0000:00:05.0: device 0x1919 (rev: 0x1)
[    8.554068] ipu3-imgu 0000:00:05.0: physical base address 0x00000000b1000000, 4194304 bytes
[    8.626525] ipu3-cio2 0000:00:14.3: Found supported sensor INT33BE:00
[    8.630520] ipu3-cio2 0000:00:14.3: Found supported sensor INT347A:00
[    8.631688] ipu3-cio2 0000:00:14.3: Found supported sensor INT347E:00
[    8.632238] ipu3-cio2 0000:00:14.3: Connected 3 cameras
[    8.633467] ipu3-cio2 0000:00:14.3: device 0x9d32 (rev: 0x1)
[    8.660357] ov5693 i2c-INT33BE:00: supply dovdd not found, using dummy regulator
[    8.660453] ov5693 i2c-INT33BE:00: supply dvdd not found, using dummy regulator
[    8.791085] ipu3-imgu 0000:00:05.0: loaded firmware version irci_irci_ecr-master_20161208_0213_20170112_1500, 17 binaries, 1212984 bytes
[   10.830927] ov8865 i2c-INT347A:00: Instantiated dw9719 VCM
ujpadmin@okachimachi:~$
  • カメラは認識されているが,センサー名がSurface 1台目・2台目とちがう.
  • INT33BE・INT347A・INT347EというACPIデバイス名で接続されている.
  • libcameraのバージョンを確認.
ujpadmin@okachimachi:~$ cam --list 2>&1 | cat🆑
[0:09:59.037679170] [1456]  INFO Camera camera_manager.cpp:284 libcamera v0.2.0
Available cameras:
ujpadmin@okachimachi:~$
  • 詳細ログを確認.
ujpadmin@okachimachi:~$ sudo cam --list 2>&1 | grep -i camera🆑
[0:10:05.193736798] [1464]  INFO Camera camera_manager.cpp:284 libcamera v0.2.0
Available cameras:
ujpadmin@okachimachi:~$
  • libcameraがカメラを認識できていない.

v4l2で確認

  • V4L2(Video for Linux 2)は,LinuxカーネルでWebカメラ,TVチューナー,ビデオキャプチャデバイスを扱うための標準的なAPI/フレームワーク.
  • これで認識されているか確認.
ujpadmin@okachimachi:~$ v4l2-ctl --list-devices🆑
Command 'v4l2-ctl' not found, but can be installed with:
sudo apt install v4l-utils🈁
ujpadmin@okachimachi:~$
  • ソフトウェアが入ってなかった.
  • v4l-utilsをインストール.
sudo apt install v4l-utils🆑
  • インストール後,コマンド実行.
ujpadmin@okachimachi:~$ v4l2-ctl --list-devices🆑
ipu3-imgu (PCI:0000:00:05.0):
    /dev/video4
    /dev/video5
    /dev/video6
    /dev/video7
    /dev/video8
    /dev/video9
    /dev/video10
    /dev/video11
    /dev/video12
    /dev/video13
    /dev/media1

Intel IPU3 CIO2 (PCI:0000:00:14.3):
    /dev/video0
    /dev/video1
    /dev/video2
    /dev/video3
    /dev/media0

ujpadmin@okachimachi:~$
  • デバイスは認識されている.
  • libcameraがIPAモジュールを見つけられていない可能がある.
  • IPAモジュールの署名確認.
ujpadmin@okachimachi:~$ ls -la /usr/lib/x86_64-linux-gnu/libcamera/🆑
total 352
drwxr-xr-x  2 root root   4096 May  3 18:56 .
drwxr-xr-x 50 root root  40960 May  3 19:13 ..
-rw-r--r--  1 root root 125256 Apr 15  2024 ipa_ipu3.so
-rw-r--r--  1 root root    256 Apr 15  2024 ipa_ipu3.so.sign
-rw-r--r--  1 root root  31048 Apr 15  2024 ipa_vimc.so
-rw-r--r--  1 root root    256 Apr 15  2024 ipa_vimc.so.sign
-rwxr-xr-x  1 root root  76264 Apr 15  2024 ipu3_ipa_proxy
-rwxr-xr-x  1 root root  63976 Apr 15  2024 vimc_ipa_proxy
ujpadmin@okachimachi:~$
  • 署名ファイルはある.
  • 環境変数を設定してリストを取り出してみる.
ujpadmin@okachimachi:~$ LIBCAMERA_IPA_MODULE_PATH=/usr/lib/x86_64-linux-gnu/libcamera cam --list 2>&1🆑
[0:11:20.751134951] [1651]  INFO Camera camera_manager.cpp:284 libcamera v0.2.0
Available cameras:
ujpadmin@okachimachi:~$
  • 認識されない.

他のSurfaceとセンサードライバーが違う(INT33BE等)可能性の確認

  • センサードライバーの状態確認.
ujpadmin@okachimachi:~$ sudo dmesg | grep -i -E "ov5693|ov8865|INT33BE|INT347A|INT347E|tps68470|regulator"🆑
[    8.023464] int3472-tps68470 i2c-INT3472:05: TPS68470 REVID: 0x21
[    8.626525] ipu3-cio2 0000:00:14.3: Found supported sensor INT33BE:00
[    8.630520] ipu3-cio2 0000:00:14.3: Found supported sensor INT347A:00
[    8.631688] ipu3-cio2 0000:00:14.3: Found supported sensor INT347E:00
[    8.660357] ov5693 i2c-INT33BE:00: supply dovdd not found, using dummy regulator🈁
[    8.660453] ov5693 i2c-INT33BE:00: supply dvdd not found, using dummy regulator🈁
[    8.729033] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[   10.698726] ov7251 i2c-INT347E:00: OV7251 revision 7 (1F) detected at address 0x60
[   10.830927] ov8865 i2c-INT347A:00: Instantiated dw9719 VCM
ujpadmin@okachimachi:~$
  • ov5693でsupply dovdd not foundエラーが出ている.
  • 電源レギュレーターが見つかっていないのが原因.
  • tps68470のレギュレータードライバーを確認.
ujpadmin@okachimachi:~$ sudo dmesg | grep -i tps68470🆑
[    8.023464] int3472-tps68470 i2c-INT3472:05: TPS68470 REVID: 0x21
ujpadmin@okachimachi:~$
  • ロード済みのカーネルモジュールの一覧からtpsを探す.
ujpadmin@okachimachi:~$ lsmod | grep -i tps🆑
leds_tps68470          12288  0
gpio_tps68470          12288  3
intel_skl_int3472_tps68470    20480  0
tps68470_regulator     12288  6
clk_tps68470           12288  3
intel_skl_int3472_common    16384  2 intel_skl_int3472_tps68470,intel_skl_int3472_discrete
ujpadmin@okachimachi:~$
  • レギュレータの確認.
ujpadmin@okachimachi:~$ # ls /sys/class/regulator/ | head -20🆑
regulator.0
regulator.1
regulator.2
regulator.3
regulator.4
regulator.5
regulator.6
regulator.7
regulator.8
ujpadmin@okachimachi:~$
  • tps68470レギュレーターは動いている.
  • ov5693のsupply dovdd not foundは警告で、ダミーレギュレーターで動作するはず.
  • 他の原因を探る.

メディアコントローラAPIから信号の流れを確認

  • LinuxのメディアコントローラーAPIを操作するmedia-ctlツールを利用.
  • /dev/media0という,IPU3 CIO2(カメラ入力)のメディアコントローラ.
  • カメラセンサーからCSI-2レシーバー,CIO2バッファまでの信号の流れを-pオプションで表示する.
ujpadmin@okachimachi:~$ # media-ctl -d /dev/media0 -p 2>&1 | head -40🆑
Media controller API version 6.19.8

Media device information
------------------------
driver          ipu3-cio2
model           Intel IPU3 CIO2
serial
bus info        PCI:0000:00:14.3
hw revision     0x0
driver version  6.19.8

Device topology
- entity 1: ipu3-csi2 0 (2 pads, 1 link, 0 routes)
            type V4L2 subdev subtype Unknown flags 0
    pad0: Sink
    pad1: Source
        -> "ipu3-cio2 0":0 [ENABLED,IMMUTABLE]

- entity 4: ipu3-cio2 0 (1 pad, 1 link)
            type Node subtype V4L flags 0
            device node name /dev/video0
    pad0: Sink
        <- "ipu3-csi2 0":1 [ENABLED,IMMUTABLE]

- entity 10: ipu3-csi2 1 (2 pads, 1 link, 0 routes)
             type V4L2 subdev subtype Unknown flags 0
    pad0: Sink
    pad1: Source
        -> "ipu3-cio2 1":0 [ENABLED,IMMUTABLE]

- entity 13: ipu3-cio2 1 (1 pad, 1 link)
             type Node subtype V4L flags 0
             device node name /dev/video1
    pad0: Sink
        <- "ipu3-csi2 1":1 [ENABLED,IMMUTABLE]

- entity 19: ipu3-csi2 2 (2 pads, 1 link, 0 routes)
             type V4L2 subdev subtype Unknown flags 0
    pad0: Sink
    pad1: Source
ujpadmin@okachimachi:~$
  • Surface Go 2の1台目と比べると、センサー(ov8865ov5693)がCSI-2に接続されていない.
  • ipu3-csi2 0のpad0にセンサーが繋がっていないのが原因.
  • カーネルのバージョンを確認.
ujpadmin@okachimachi:~$ uname -r🆑
6.19.8-surface-2🈁
ujpadmin@okachimachi:~
  • センサーとCSI-2の接続状態を確認
ujpadmin@okachimachi:~$ media-ctl -d /dev/media0 -p 2>&1 | grep -i "ov\|sensor\|ENABLED"🆑
        -> "ipu3-cio2 0":0 [ENABLED,IMMUTABLE]
        <- "ipu3-csi2 0":1 [ENABLED,IMMUTABLE]
        -> "ipu3-cio2 1":0 [ENABLED,IMMUTABLE]
        <- "ipu3-csi2 1":1 [ENABLED,IMMUTABLE]
        -> "ipu3-cio2 2":0 [ENABLED,IMMUTABLE]
        <- "ipu3-csi2 2":1 [ENABLED,IMMUTABLE]
        -> "ipu3-cio2 3":0 [ENABLED,IMMUTABLE]
        <- "ipu3-csi2 3":1 [ENABLED,IMMUTABLE]
- entity 37: ov5693 4-0036 (1 pad, 0 link, 0 routes)
             type V4L2 subdev subtype Sensor flags 0
- entity 39: ov8865 2-0010 (1 pad, 0 link, 0 routes)
             type V4L2 subdev subtype Sensor flags 0
- entity 41: ov7251 3-0060 (1 pad, 0 link, 0 routes)
             type V4L2 subdev subtype Sensor flags 0
ujpadmin@okachimachi:~$
  • センサー(ov5693ov8865ov7251)が認識されているのにCSI-2へのリンクが0(未接続)になっている.
  • Surface 1台目では[ENABLED]リンクがあったが,このカーネル(6.19.8)ではリンクが張られてない.
  • カーネルバージョンの違いが原因.
    • 1台目は6.18.7-surface-1,3台目は6.19.8-surface-2

古いカーネルに戻す

現在のカーネルを確認

  • インストール済みカーネル一覧.
ujpadmin@okachimachi:~$ dpkg -l | grep linux-image🆑
ii  linux-image-6.19.8-surface-2          6.19.8-surface-2                        amd64        Linux kernel, version 6.19.8-surface-2
ii  linux-image-6.8.0-111-generic         6.8.0-111.111                           amd64        Signed kernel image generic
ii  linux-image-generic                   6.8.0-111.111                           amd64        Generic Linux kernel image
ii  linux-image-surface                   6.19.8-surface-2                        amd64
ujpadmin@okachimachi:~$
  • 6.18系が入っているか確認.
ujpadmin@okachimachi:~$ # ls /boot/vmlinuz*
/boot/vmlinuz  /boot/vmlinuz-6.19.8-surface-2  /boot/vmlinuz-6.8.0-111-generic  /boot/vmlinuz.old
ujpadmin@okachimachi:~$
  • 6.18系は入ってない.

apt-cacheでキャッシュにある利用可能なsurfaceカーネルのバージョン確認

ujpadmin@okachimachi:~$ apt-cache showpkg linux-image-surface | grep -i "6.18\|6.19"🆑
6.19.8-surface-2 (/var/lib/apt/lists/pkg.surfacelinux.com_debian_dists_release_main_binary-amd64_Packages) (/var/lib/dpkg/status)
6.19.8-surface-2 - linux-image-6.19.8-surface-2 (5 6.19.8-surface-2) iptsd (0 (null))
6.19.8-surface-2 -
ujpadmin@okachimachi:~$
  • 6.18はない模様.

過去バージョンが入手できるか確認.

ujpadmin@okachimachi:~$ apt-cache policy linux-image-surface🆑
linux-image-surface:
  Installed: 6.19.8-surface-2
  Candidate: 6.19.8-surface-2
  Version table:
 *** 6.19.8-surface-2 500
        500 https://pkg.surfacelinux.com/debian release/main amd64 Packages
        100 /var/lib/dpkg/status
ujpadmin@okachimachi:~$
  • リポジトリに,6.19.8しかない.正しく動いたバージョンをダウンロードできない.
  • Surface Go 2の1台目からdebパッケージを持ってくることを検討.

1台目のSurface Go 2で確認

ujpadmin@serveradmin:~$ dpkg -l | grep "6.18.7-surface"🆑
ii  linux-headers-6.18.7-surface-1        6.18.7-surface-1                        amd64        Linux kernel headers for 6.18.7-surface-1 on amd64
ii  linux-headers-surface                 6.18.7-surface-1                        amd64
ii  linux-image-6.18.7-surface-1          6.18.7-surface-1                        amd64        Linux kernel, version 6.18.7-surface-1
ii  linux-image-surface                   6.18.7-surface-1                        amd64
ujpadmin@serveradmin:~$
  • キャッシュが残っているか確認.
ujpadmin@serveradmin:~$ ls /var/cache/apt/archives/ | grep "6.18.7-surface"🆑
ujpadmin@serveradmin:~$
  • 無かった...

githubからダウンロード&インストール

  • パッケージをwgetコマンドで入手して,インストールする
ujpadmin@okachimachi:~$ wget https://github.com/linux-surface/linux-surface/releases/download/debian-6.18.7-1/linux-image-6.18.7-surface-1_6.18.7-surface-1_amd64.deb🆑
--2026-05-04 16:28:48--  https://github.com/linux-surface/linux-surface/releases/download/debian-6.18.7-1/linux-image-6.18.7-surface-1_6.18.7-surface-1_amd64.deb
Resolving github.com (github.com)... 20.27.177.113
Connecting to github.com (github.com)|20.27.177.113|:443... connected.
HTTP request sent, awaiting response... 302 Found
ー略ー
linux-image-6.18.7-surface-1_6.18.7-surfa 100%[=====================================================================================>]  88.38M  8.72MB/s    in 9.6s

2026-05-04 16:28:59 (9.18 MB/s) - ‘linux-image-6.18.7-surface-1_6.18.7-surface-1_amd64.deb’ saved [92678798/92678798]

ujpadmin@okachimachi:~$
  • もう1つ.
ujpadmin@okachimachi:~$ wget https://github.com/linux-surface/linux-surface/releases/download/debian-6.18.7-1/linux-headers-6.18.7-surface-1_6.18.7-surface-1_amd64.deb🆑
--2026-05-04 16:29:05--  https://github.com/linux-surface/linux-surface/releases/download/debian-6.18.7-1/linux-headers-6.18.7-surface-1_6.18.7-surface-1_amd64.deb
Resolving github.com (github.com)... 20.27.177.113
Connecting to github.com (github.com)|20.27.177.113|:443... connected.
HTTP request sent, awaiting response... 302 Found
ー略ー
HTTP request sent, awaiting response... 200 OK
Length: 11281778 (11M) [application/octet-stream]
Saving to: ‘linux-headers-6.18.7-surface-1_6.18.7-surface-1_amd64.deb’

linux-headers-6.18.7-surface-1_6.18.7-sur 100%[=====================================================================================>]  10.76M  9.82MB/s    in 1.1s

2026-05-04 16:29:07 (9.82 MB/s) - ‘linux-headers-6.18.7-surface-1_6.18.7-surface-1_amd64.deb’ saved [11281778/11281778]

ujpadmin@okachimachi:~$
  • インストールする.
ujpadmin@okachimachi:~$ sudo dpkg -i linux-image-6.18.7-surface-1_6.18.7-surface-1_amd64.deb🆑
[sudo] password for server:
Selecting previously unselected package linux-image-6.18.7-surface-1.
(Reading database ... 131397 files and directories currently installed.)
Preparing to unpack linux-image-6.18.7-surface-1_6.18.7-surface-1_amd64.deb ...
Unpacking linux-image-6.18.7-surface-1 (6.18.7-surface-1) ...
Setting up linux-image-6.18.7-surface-1 (6.18.7-surface-1) ...
update-initramfs: Generating /boot/initrd.img-6.18.7-surface-1
Sourcing file `/etc/default/grub'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.19.8-surface-2
Found initrd image: /boot/initrd.img-6.19.8-surface-2
Found linux image: /boot/vmlinuz-6.18.7-surface-1
Found initrd image: /boot/initrd.img-6.18.7-surface-1
Found linux image: /boot/vmlinuz-6.8.0-111-generic
Found initrd image: /boot/initrd.img-6.8.0-111-generic
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done
ujpadmin@okachimachi:~$
  • もう1つ.
ujpadmin@okachimachi:~$ sudo dpkg -i linux-headers-6.18.7-surface-1_6.18.7-surface-1_amd64.deb🆑
Selecting previously unselected package linux-headers-6.18.7-surface-1.
(Reading database ... 139512 files and directories currently installed.)
Preparing to unpack linux-headers-6.18.7-surface-1_6.18.7-surface-1_amd64.deb ...
Unpacking linux-headers-6.18.7-surface-1 (6.18.7-surface-1) ...
Setting up linux-headers-6.18.7-surface-1 (6.18.7-surface-1) ...
ujpadmin@okachimachi:~$
  • エラーなく終了.

grubの設定を更新

  • カーネルをインストールしたので,grubの情報を更新.
ujpadmin@okachimachi:~$ sudo update-grub🆑
Sourcing file `/etc/default/grub'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.19.8-surface-2
Found initrd image: /boot/initrd.img-6.19.8-surface-2
Found linux image: /boot/vmlinuz-6.18.7-surface-1
Found initrd image: /boot/initrd.img-6.18.7-surface-1
Found linux image: /boot/vmlinuz-6.8.0-111-generic
Found initrd image: /boot/initrd.img-6.8.0-111-generic
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done
ujpadmin@okachimachi:~$
  • UEFI Firmware Settingのメニューに追加された.
  • OSを再起動する.
ujpadmin@okachimachi:~$ sudo reboot🆑

Broadcast message from root@okachimachi on pts/1 (Mon 2026-05-04 16:34:29 JST):

The system will reboot now!

ujpadmin@okachimachi:~$ Connection to 192.168.20.61 closed by remote host.
Connection to 192.168.20.61 closed.

OS起動時にFirmwareの選択

  • 再起動時に,再起動後にGRUBで6.18.7-surface-1を選択する.
  • Surface Go 2のセキュアブートを解除しておいて,赤いバーと鍵が開いたアイコンが表示されたらESCキーを押す.

  • 次に,GRUBメニューが表示される
  • UEFI Firmware Settingsを選択.

  • Ubuntu,with Linux 6.18.7-surface-1を選択.
  • linuxが起動する.

カーネルとカメラが認識されているか確認

  • 指定されたカーネルで起動しているか確認し,カメラが認識されているか確認.
ujpadmin@okachimachi:~$ uname -r🆑
6.18.7-surface-1
ujpadmin@okachimachi:~$

ujpadmin@okachimachi:~$ cam --list 2>&1 | grep -i camera🆑
[0:01:23.965851820] [1456]  INFO Camera camera_manager.cpp:284 libcamera v0.2.0
[0:01:24.103441658] [1462]  INFO IPU3 ipu3.cpp:1141 Registered Camera[0] "\_SB_.PCI0.LNK0" connected to CSI-2 receiver 0
[0:01:24.105209933] [1462]  INFO IPU3 ipu3.cpp:1141 Registered Camera[1] "\_SB_.PCI0.LNK1" connected to CSI-2 receiver 1
Available cameras:
1: Internal back camera (\_SB_.PCI0.LNK0)🈁
2: Internal front camera (\_SB_.PCI0.LNK1)🈁
ujpadmin@okachimachi:~$
  • カメラが認識された.

フレーム認識テストでカメラ動作確認

  • 作業用ディレクトリを作成してカメラからキャプチャーする.
ujpadmin@okachimachi:~$ mkdir -p /tmp/cam_test🆑
ujpadmin@okachimachi:~$ cam -c 2 --stream=width=640,height=480 --capture=5 --file=/tmp/cam_test/ 2>/dev/null🆑
Using camera \_SB_.PCI0.LNK1 as cam0
cam0: Capture 5 frames
131.859994 (0.00 fps) cam0-stream0 seq: 000000 bytesused: 307200/153600
131.877725 (56.40 fps) cam0-stream0 seq: 000001 bytesused: 307200/153600
131.895088 (57.59 fps) cam0-stream0 seq: 000002 bytesused: 307200/153600
131.912605 (57.09 fps) cam0-stream0 seq: 000003 bytesused: 307200/153600
131.929409 (59.51 fps) cam0-stream0 seq: 000004 bytesused: 307200/153600
ujpadmin@okachimachi:~$ ls -la /tmp/cam_test/🆑
total 2268
drwxrwxr-x  2 server server   4096 May  4 16:39 .
drwxrwxrwt 14 root   root     4096 May  4 16:39 ..
-rw-rw-r--  1 server server 460800 May  4 16:39 frame-cam0-stream0-000000.bin
-rw-rw-r--  1 server server 460800 May  4 16:39 frame-cam0-stream0-000001.bin
-rw-rw-r--  1 server server 460800 May  4 16:39 frame-cam0-stream0-000002.bin
-rw-rw-r--  1 server server 460800 May  4 16:39 frame-cam0-stream0-000003.bin
-rw-rw-r--  1 server server 460800 May  4 16:39 frame-cam0-stream0-000004.bin
ujpadmin@okachimachi:~$
  • フレームファイルが作成されているので,動作確認完了.

apt upgradeでlinux-image-surfaceとlinux-headers-surfaceが更新されない様に固定する

  • linux-surface カーネル6.18.7ではカメラは正しく動いたが,6.19.8だと動かなかった.
  • apt upgradeでバージョンアップされると動かなくなる可能性があるので,バージョンアップされない様に固定する.
ujpadmin@okachimachi:~$ sudo apt-mark hold linux-image-surface linux-headers-surface🆑
[sudo] password for server:🔑
linux-image-surface set on hold.
linux-headers-surface set on hold.
ujpadmin@okachimachi:~$
  • 固定化されているパッケージの一覧を表示.
ujpadmin@okachimachi:~$ apt-mark showhold🆑
linux-headers-surface
linux-image-surface
ujpadmin@okachimachi:~$
  • ホールドを解除できることを確認し,再度ホールドする.
ujpadmin@okachimachi:~$ sudo apt-mark unhold linux-image-surface linux-headers-surface🆑
Canceled hold on linux-image-surface.
Canceled hold on linux-headers-surface.
ujpadmin@okachimachi:~$ apt-mark showhold🆑
ujpadmin@okachimachi:~$ sudo apt-mark hold linux-image-surface linux-headers-surface🆑
linux-image-surface set on hold.
linux-headers-surface set on hold.
ujpadmin@okachimachi:~$
  • これで安定しそう.今後は動作されるカーネルのバージョンを待つ感じか.

広告スペース
Google