気の向くままに辿るIT/ICT/IoT
ハードウェア

OPi Zero 3でdebian.orgリポジトリ切替運用時はfull-upgrade前にカーネル退避

ホーム前へ次へ
Orange Piって?

OPi Zero 3でdebian.orgリポジトリ切替運用時はfull-upgrade前にカーネル退避

OPi Zero 3でdebian.orgリポジトリ切替運用時はfull-upgrade前にカーネル退避

2025/11/24

 Orange Pi Zero 3のリポジトリrepo.huaweicloud.com/debianをdebian.orgに切り替えて運用する場合、apt full-upgrade時などカーネル更新を伴うアップグレード時は、事前にdebian.orgにあるはずのないsun50iw9カーネル類をapt-mark hold等で退避しておくべき、そうしないとsun50iw9カーネルを再インストールする羽目になるよねという話。

アップグレード後、必要となった復旧と原因特定からの対策

 2年ちょっと前から現時点でOrange Pi Zero 3を通算3台運用中、1台めを買った時からカーネルはどうしたら?と思いつつもリポジトリは、debian.orgの方が...と当然のように運用していました。

 そんな折、Orange Pi Zero 3としては初のメジャーアップグレードとなるBookwormからtrixieへのアップグレードには成功したものの、アップグレード後にオーディオ周りの再設定を要し、カーネルの再インストール+アルファで復活するに至り、原因がわかり、4. Debian 12 (bookworm) からのアップグレードにあったapt-mark holdとかでカーネル類をアップグレード対象から除外しておけば良いんだよねと対策に気づいた次第。

 逆に、それを忘れた場合でもカーネルの再インストール+アルファで復旧できることがわかったとも言えますが。

 wheezy、jessieあたりからDebianも運用していたので開発コードをまたぐアップグレードも当然、1度や2度ではないのですが、今回のような変則的なリポジトリの変更を伴うことがなかったこともあって、これまでパッケージを退避したことも、そうしなかったことで躓いたこともなかったんですよね。

 いや、もしかしたら、自覚がないだけで、実は、それが原因でコケていたとは気づかず、なんとか復旧させていたこともあったのかもしれませんが。

apt-mark holdでカーネルをアップグレード対象から除外して検証

 カーネル再インストールに至る過程で、興味本位も手伝ってOrange Pi Linux SDKのbuild.shでU-Bootやsun50iw9-nextカーネルのコンパイルやブータブルイメージのビルドをしていたので余っているUSBメモリにイメージをddして念の為、検証した結果、以下の通り、原因と対策が、想定通りであることがわかりました。

bookworm_opizero3:~$ sudo sed -i -e 's/^/#/' /etc/apt/sources.list
bookworm_opizero3:~$ cat /etc/apt/sources.list.d/opizero3.sources
Types: deb deb-src
URIs: http://repo.huaweicloud.com/debian
Suites: bookworm bookworm-updates bookworm-backports
Components: main contrib non-free non-free-firmware
Signed-By: /etc/apt/keyrings/opi-debian-archive-trixie-stable.gpg
allow-insecure: yes
trusted: yes
bookworm_opizero3:~$

 BookwormのAPTソース。

 Bookworm時点では、*.listで一行書きでも良かったものの、trixieから正式となった*.sourcesな新たな書き方で。

 /etc/apt/sources.listを全行コメントアウト、/etc/apt/sources.list.d/以下にopizero3.sourcesという任意名でこのように作成。

 repo.huaweicloudのkeyringは、パス上から*.gpgを取得、改名して配置したのですが、自信がなかったのでセキュリティ無視なallow-insecure、強制的にtrustedと共にyesを併せて設定。

 また、repo.huaweicloudでは、*.listファイル上でもbackportsもありましたが、debian.orgのbackportsの扱いがよくわからなかったので後掲のdebian.orgに変更後では外した一方、なんとなくsecurityを追加しました。

bookworm_opizero3:~$ cat /etc/debian_version
12.2
bookworm_opizero3:~$ sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && sudo apt autoclean -y && sudo apt clean -y
...
bookworm_opizero3:~$

 ビルド済みブータブルイメージをdd後のBookwromバージョンは、12.2でしたが、一応、アップデートしつつ、アップグレード。

 4件ほどアップグレード対象パッケージがありました。

bookworm_opizero3:~$ sudo apt-mark hold linux-image-next-sun50iw9 linux-dtb-next-sun50iw9 linux-headers-arm64 linux-headers-6.1.0-.*-arm64
linux-image-next-sun50iw9 set on hold.
linux-dtb-next-sun50iw9 set on hold.
linux-headers-arm64 set on hold.
linux-headers-6.1.0-35-arm64 set on hold.
linux-headers-6.1.0-35-cloud-arm64 set on hold.
linux-headers-6.1.0-35-rt-arm64 set on hold.
linux-headers-6.1.0-39-arm64 set on hold.
linux-headers-6.1.0-39-cloud-arm64 set on hold.
linux-headers-6.1.0-39-rt-arm64 set on hold.
bookworm_opizero3:~$

 そしてカーネル類の退避、カーネルイメージだけでも良きに計らってくれるのかも?とも思いましたが、より安全かなと、カーネルイメージと同じnext-sun50iw9なdtbとカーネルバージョンが同じだった6.1系でarm64なlinux-headers-6.1.0もアップグレード対象から除外。

bookworm_opizero3:~$ cat /etc/apt/sources.list.d/opizero3.sources
Types: deb deb-src
URIs: http://deb.debian.org/debian
Suites: trixie trixie-updates
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-trixie-automatic.gpg
 
Types: deb deb-src
URIs: http://security.debian.org/debian-security
Suites: trixie-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-trixie-security-automatic.gpg
bookworm_opizero3:~$

 APTソースをtrixieに修正・変更。

 repo.huaweicloudでは、入っていたbackportsですが、debian.orgでは外した一方、securityを追加。

bookworm_opizero3:~$ sudo apt update
...
Fetched 103 MB in 1min 39s (1,042 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
466 packages can be upgraded. Run 'apt list --upgradable' to see them.
bookworm_opizero3:~$

 apt updateによれば、trixieへアップグレードするにあたり、アップグレード対象パッケージは、466件。

bookworm_opizero3:~$ sudo apt upgrade --without-new-pkgs
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
  libicu72 libnsl-dev libtirpc-dev python3-six
Use 'sudo apt autoremove' to remove them.
The following packages have been kept back:
  adduser alsa-utils apt apt-utils aptitude aptitude-common bc bind9-dnsutils
  bind9-host bind9-libs binutils binutils-aarch64-linux-gnu binutils-common
  bluez bluez-tools bsdutils btrfs-progs build-essential chrony coreutils cpp
  cpp-12 curl dconf-cli dialog dirmngr dnsmasq-base e2fsprogs f3 fdisk file
  fuse3 g++ g++-12 gcc gcc-12 gcc-12-base gir1.2-glib-2.0
  gir1.2-packagekitglib-1.0 git git-man gnupg gnupg-l10n gnupg-utils gnupg2
  gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm gpgv hostapd
  hping3 html2text initramfs-tools initramfs-tools-core iotop iproute2
  ir-keytable kmod libapt-pkg-perl libasan8 libatomic1 libbinutils libbpf1
  libcaca0 libcc1-0 libcryptsetup12 libctf0 libcwidget4 libdconf1
  libdigest-sha-perl libfido2-1 libgcc-12-dev libgcc-s1 libgirepository-1.0-1
  libglib2.0-bin libgomp1 libgprofng0 libgssapi-krb5-2 libgstreamer1.0-0
  libhwasan0 libidn2-0 libiperf0 libitm1 libjack-jackd2-0 libk5crypto3
  libkmod2 libkrb5-3 libkrb5support0 liblocale-gettext-perl liblsan0
  libmagic-mgc libmm-glib0 libncursesw6 libnfsidmap1 libnm0 libnsl-dev libnsl2
  libpackagekit-glib2-18 libpam-modules libpam-modules-bin libpam-runtime
  libpam-systemd libpolkit-agent-1-0 libpolkit-gobject-1-0 libportaudio2
  libproc-processtable-perl libpython3-dev libpython3-stdlib librtmp1
  libsasl2-2 libsasl2-modules-db libssl-dev libstdc++-12-dev libstdc++6
  libsystemd-shared libsystemd0 libtinfo6 libtirpc-dev libtsan2 libubsan1
  libudev1 libxapian30 libxmlb2 lirc login lsof man-db mc mc-data ncurses-bin
  network-manager network-manager-openvpn nfs-common ntfs-3g openssh-client
  openssh-server openssh-sftp-server openssl openvpn packagekit parted passwd
  perl perl-base pinentry-curses polkitd procps python3 python3-apt
  python3-cffi-backend python3-cryptography python3-dbus python3-dev
  python3-gi python3-minimal python3-pkg-resources qrencode rpcbind rsync sudo
  systemd systemd-sysv tmux u-boot-tools ucf udev util-linux util-linux-extra
  v4l-utils wget wireless-tools wpasupplicant
The following packages will be upgraded:
  apt-transport-https autoconf automake autotools-dev avahi-autoipd base-files
  base-passwd bash bash-completion bison bluetooth bsdextrautils bzip2
  ca-certificates command-not-found console-setup console-setup-linux cpio
  cracklib-runtime cron cron-daemon-common dash dbus dbus-bin dbus-daemon
  dbus-session-bus-common dbus-system-bus-common debconf debconf-utils
  debian-archive-keyring debianutils device-tree-compiler diffutils
  distro-info-data dkms dmsetup dnsmasq dosfstools dpkg dpkg-dev ethtool
  evtest expect f2fs-tools fake-hwclock fbset figlet findutils flex fping grep
  groff-base gzip haveged hdparm hostname htop i2c-tools ifenslave ifupdown
  init init-system-helpers iozone3 iperf3 iptables iputils-arping iputils-ping
  isc-dhcp-client iso-codes iw jq kbd keyboard-configuration keyutils
  klibc-utils less libacl1 libapparmor1 libargon2-1 libasound2-data libattr1
  libaudit-common libaudit1 libblkid1 libbluetooth3 libbrotli1 libbsd0
  libbz2-1.0 libc-bin libc-dev-bin libc-l10n libc6 libc6-dev libcap-ng0
  libcap2 libcap2-bin libcom-err2 libcrack2 libcrypt-dev libcrypt1
  libctf-nobfd0 libdaemon0 libdbus-1-3 libdebconfclient0 libdevmapper1.02.1
  libdpkg-perl libduktape207 libedit2 liberror-perl libestr0 libexpat1
  libexpat1-dev libfastjson4 libfdisk1 libfdt1 libffi8 libfftw3-single3
  libfile-find-rule-perl libfstrm0 libftdi1-2 libgcrypt20 libglib2.0-data
  libgmp10 libgpg-error0 libgpm2 libhavege2 libi2c0 libip4tc2 libip6tc2
  libisl23 libjansson4 libjemalloc2 libjpeg62-turbo libjq1 libjs-sphinxdoc
  libjson-c5 libkeyutils1 libklibc libksba8 liblmdb0 liblognorm5 liblz4-1
  liblzma5 liblzo2-2 libmaxminddb0 libmd0 libmnl0 libmount1 libmpc3 libmpfr6
  libndp0 libnetfilter-conntrack3 libnewt0.52 libnfnetlink0 libnftables1
  libnftnl11 libnghttp2-14 libnl-3-200 libnl-3-dev libnl-genl-3-200
  libnl-genl-3-dev libnl-route-3-200 libnss-myhostname libonig5 libopus0
  libp11-kit0 libpam0g libpci3 libpcre2-8-0 libpcsclite1 libpipeline1 libpopt0
  libproc2-0 libprotobuf-c1 libqrencode4 libsamplerate0 libsctp1 libseccomp2
  libselinux1 libsemanage-common libsemanage2 libsensors-config libsensors5
  libsepol2 libsigc++-2.0-0v5 libslang2 libsmartcols1 libsodium23 libsqlite3-0
  libss2 libstemmer0d libsysfs2 libtasn1-6 libtcl8.6 libteamdctl0
  libtirpc-common libuchardet0 libunwind8 libusb-0.1-4 libusb-1.0-0
  libutempter0 libuuid1 libwrap0 libwrap0-dev libxml2 libxtables12 libxxhash0
  libyaml-0-2 libzstd1 linux-base linux-libc-dev lm-sensors locales logrotate
  logsave lsb-release m4 make mawk media-types mmc-utils mount nano
  ncurses-base ncurses-term net-tools netbase netcat-openbsd nocache patch
  pci.ids pciutils psmisc pv python-apt-common python-is-python3
  python3-blinker python3-distro python3-distro-info python3-httplib2
  python3-jwt python3-lazr.restfulclient python3-lazr.uri python3-oauthlib
  python3-pip-whl python3-pyparsing python3-setuptools-whl python3-six
  python3-wadllib readline-common resolvconf rfkill rpcsvc-proto rsyslog
  runit-helper screen sed sensible-utils sgml-base smartmontools stress
  sunxi-tools sysfsutils sysstat sysvinit-utils tar tcl-expect tcl8.6 toilet
  toilet-fonts tree tzdata unattended-upgrades unicode-data unzip usbutils
  usrmerge vim vim-common vim-runtime vlan vnstat whiptail wireless-regdb
  xkb-data xml-core xz-utils zlib1g zlib1g-dev zsh zsh-common
291 upgraded, 0 newly installed, 0 to remove and 175 not upgraded.
Need to get 97.4 MB of archives.
After this operation, 27.5 MB of additional disk space will be used.
Do you want to continue? [Y/n]
 
...
bookworm_opizero3:~$

 内、trixieへ最小アップグレード対象パッケージは、291件。

bookworm_opizero3:~$ sudo apt full-upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
  g++-12 libappstream4 libboost-iostreams1.74.0 libcbor0.8 libfuse3-3 libicu72
  libnsl-dev libpython3.11 libpython3.11-dev libpython3.11-minimal
  libpython3.11-stdlib libstdc++-12-dev libtirpc-dev libunwind8 libutempter0
  python3-pip-whl python3-setuptools-whl python3-six python3.11 python3.11-dev
  python3.11-minimal
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  libasound2 libatopology2 libcurl3-gnutls libcurl4 libdb5.3 libdw1 libelf1
  libevent-core-2.1-7 libext2fs2 libgdbm-compat4 libgdbm6 libglib2.0-0
  libgnutls30 libhogweed6 libiw30 liblirc-client0 liblirc0 libmagic1
  libnettle8 libnpth0 libntfs-3g89 libparted2 libpcap0.8 libpkcs11-helper1
  libpng16-16 libpsl5 libreadline8 libssh2-1 libssl3 libtirpc3 liburcu8 libuv1
  libv4l-0 libv4l2rds0 libv4lconvert0 python3-distutils python3-lib2to3
  python3.11-venv
The following NEW packages will be installed:
  cpp-14 cpp-14-aarch64-linux-gnu cpp-aarch64-linux-gnu dracut-install
  exim4-base exim4-config exim4-daemon-light g++-14 g++-14-aarch64-linux-gnu
  g++-aarch64-linux-gnu gcc-14 gcc-14-aarch64-linux-gnu gcc-14-base
  gcc-aarch64-linux-gnu gir1.2-girepository-2.0 initramfs-tools-bin
  libappstream5 libapt-pkg7.0 libasound2t64 libassuan9 libatopology2t64
  libboost-iostreams1.83.0 libcbor0.10 libcurl3t64-gnutls libcurl4t64
  libdb5.3t64 libdialog15 libdw1t64 libelf1t64 libevent-2.1-7t64
  libevent-core-2.1-7t64 libext2fs2t64 libfile-fcntllock-perl libfuse3-4
  libgcc-14-dev libgdbm-compat4t64 libgdbm6t64 libglib2.0-0t64
  libgnutls-dane0t64 libgnutls30t64 libhogweed6t64 libidn12 libiw30t64
  liblastlog2-2 libldap2 liblirc-client0t64 liblirc0t64 liblsof0 libmagic1t64
  libnettle8t64 libnghttp3-9 libngtcp2-16 libngtcp2-crypto-gnutls8 libnpth0t64
  libntfs-3g89t64 libparted2t64 libpcap0.8t64 libperl5.40 libpkcs11-helper1t64
  libpng16-16t64 libpsl5t64 libpython3.13 libpython3.13-dev
  libpython3.13-minimal libpython3.13-stdlib libreadline8t64
  libreiserfscore0t64 libsframe1 libssh2-1t64 libssl3t64 libstdc++-14-dev
  libtext-charwidth-perl libtext-wrapi18n-perl libtirpc3t64 libunbound8
  libunistring5 liburcu8t64 libuv1t64 libv4l-0t64 libv4l2rds0t64
  libv4lconvert0t64 libwtmpdb0 login.defs openssl-provider-legacy
  perl-modules-5.40 python3-autocommand python3-bcrypt python3-inflect
  python3-jaraco.context python3-jaraco.functools python3-more-itertools
  python3-typeguard python3-typing-extensions python3.13 python3.13-dev
  python3.13-minimal sqv
The following packages will be upgraded:
  adduser alsa-utils apt apt-utils aptitude aptitude-common bc bind9-dnsutils
  bind9-host bind9-libs binutils binutils-aarch64-linux-gnu binutils-common
  bluez bluez-tools bsdutils btrfs-progs build-essential chrony coreutils cpp
  cpp-12 curl dconf-cli dialog dirmngr dnsmasq-base e2fsprogs f3 fdisk file
  fuse3 g++ g++-12 gcc gcc-12 gcc-12-base gir1.2-glib-2.0
  gir1.2-packagekitglib-1.0 git git-man gnupg gnupg-l10n gnupg-utils gnupg2
  gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf gpgsm gpgv hostapd
  hping3 html2text initramfs-tools initramfs-tools-core iotop iproute2
  ir-keytable kmod libapt-pkg-perl libasan8 libatomic1 libbinutils libbpf1
  libcaca0 libcc1-0 libcryptsetup12 libctf0 libcwidget4 libdconf1
  libdigest-sha-perl libfido2-1 libgcc-12-dev libgcc-s1 libgirepository-1.0-1
  libglib2.0-bin libgomp1 libgprofng0 libgssapi-krb5-2 libgstreamer1.0-0
  libhwasan0 libidn2-0 libiperf0 libitm1 libjack-jackd2-0 libk5crypto3
  libkmod2 libkrb5-3 libkrb5support0 liblocale-gettext-perl liblsan0
  libmagic-mgc libmm-glib0 libncursesw6 libnfsidmap1 libnm0 libnsl-dev libnsl2
  libpackagekit-glib2-18 libpam-modules libpam-modules-bin libpam-runtime
  libpam-systemd libpolkit-agent-1-0 libpolkit-gobject-1-0 libportaudio2
  libproc-processtable-perl libpython3-dev libpython3-stdlib librtmp1
  libsasl2-2 libsasl2-modules-db libssl-dev libstdc++-12-dev libstdc++6
  libsystemd-shared libsystemd0 libtinfo6 libtirpc-dev libtsan2 libubsan1
  libudev1 libxapian30 libxmlb2 lirc login lsof man-db mc mc-data ncurses-bin
  network-manager network-manager-openvpn nfs-common ntfs-3g openssh-client
  openssh-server openssh-sftp-server openssl openvpn packagekit parted passwd
  perl perl-base pinentry-curses polkitd procps python3 python3-apt
  python3-cffi-backend python3-cryptography python3-dbus python3-dev
  python3-gi python3-minimal python3-pkg-resources qrencode rpcbind rsync sudo
  systemd systemd-sysv tmux u-boot-tools ucf udev util-linux util-linux-extra
  v4l-utils wget wireless-tools wpasupplicant
175 upgraded, 97 newly installed, 38 to remove and 0 not upgraded.
Need to get 207 MB of archives.
After this operation, 320 MB of additional disk space will be used.
Do you want to continue? [Y/n]
 
 
...
bookworm_opizero3:~$

 trixieへの最小アップグレード完了後のフルアップグレード対象パッケージは、175件。

 新たにインストールされるパッケージが38件。

trixie_opizero3:~$ cat /etc/debian_version
13.2
trixie_opizero3:~$ lsmod

 バージョンが、13.2になっているのでtrixieへのアップグレードは成功。

 フルアップグレードするまでもなく、最小アップグレード時点でバージョンは13.2になってますが。

trixie_opizero3:~$ lsmod
Module                  Size  Used by
rfcomm                 77824  2
nfnetlink              20480  1
bnep                   28672  2
hci_uart              135168  1
btqca                  24576  1 hci_uart
btrtl                  28672  1 hci_uart
btbcm                  20480  1 hci_uart
btintel                40960  1 hci_uart
bluetooth             712704  26 btrtl,btqca,btintel,hci_uart,btbcm,bnep,rfcomm
ecdh_generic           16384  1 bluetooth
ecc                    32768  1 ecdh_generic
sunrpc                286720  1
sprdbt_tty             36864  2
lz4hc                  16384  0
lz4                    16384  0
snd_usb_audio         278528  0
polyval_ce             16384  0
snd_hwdep              20480  1 snd_usb_audio
sunxi_cedrus           45056  0
polyval_generic        16384  1 polyval_ce
snd_usbmidi_lib        32768  1 snd_usb_audio
snd_rawmidi            40960  1 snd_usbmidi_lib
uvcvideo              106496  0
snd_seq_device         16384  1 snd_rawmidi
sunxi_cir              20480  0
videobuf2_dma_contig    24576  1 sunxi_cedrus
v4l2_mem2mem           36864  1 sunxi_cedrus
videobuf2_vmalloc      20480  1 uvcvideo
rc_core                49152  2 sunxi_cir
videobuf2_memops       20480  2 videobuf2_vmalloc,videobuf2_dma_contig
dw_hdmi_cec            16384  0
videobuf2_v4l2         24576  3 sunxi_cedrus,uvcvideo,v4l2_mem2mem
videobuf2_common       49152  7 sunxi_cedrus,videobuf2_vmalloc,videobuf2_dma_contig,videobuf2_v4l2,uvcvideo,v4l2_mem2mem,videobuf2_memops
zram                   28672  3
videodev              204800  5 sunxi_cedrus,videobuf2_v4l2,uvcvideo,videobuf2_common,v4l2_mem2mem
mc                     53248  7 sunxi_cedrus,videodev,snd_usb_audio,videobuf2_v4l2,uvcvideo,videobuf2_common,v4l2_mem2mem
display_connector      20480  0
binfmt_misc            24576  1
sprdwl_ng             352256  0
sunxi_addr             20480  1 sprdwl_ng
cfg80211              376832  1 sprdwl_ng
rfkill                 36864  7 sprdbt_tty,bluetooth,cfg80211
uwe5622_bsp_sdio      208896  2 sprdbt_tty,sprdwl_ng
fuse                  131072  1
dm_mod                131072  0
motorcomm              24576  1
dwmac_sun8i            28672  0
mdio_mux               16384  1 dwmac_sun8i
uas                    28672  0
trixie_opizero3:~$

 事前にカーネルを保持しておいたことでカーネルモジュールも健在。

trixie_opizero3:~$ pactl info
sudo apt install pulseaudio-utils
trixie_opizero3:~$ pulseaudio -D
Command 'pulseaudio' not found, but can be installed with:
sudo apt install pulseaudio
trixie_opizero3:~$ sudo apt install pulseaudio
trixie_opizero3:~$ dpkg -l pulseaudio-utils
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name             Version         Architecture Description
+++-================-===============-============-=============================>
ii  pulseaudio-utils 17.0+dfsg1-2+b1 arm64        Command line tools for the Pu>
lines 1-6/6 (END)
trixie_opizero3:~$ pulseaudio -D
trixie_opizero3:~$ pactl info
Server String: /run/user/1000/pulse/native
Library Protocol Version: 35
Server Protocol Version: 35
Is Local: yes
Client Index: 1
Tile Size: 65472
User Name: ryo
Host Name: orangepizero3
Server Name: pulseaudio
Server Version: 17.0
Default Sample Specification: s16le 2ch 44100Hz
Default Channel Map: front-left,front-right
Default Sink: alsa_output.platform-5096000.codec.stereo-fallback
Default Source: alsa_input.usb-Etron_Technology__Inc._UCAM-C0220F-02.mono-fallback
Cookie: 8224:ed72
trixie_opizero3:~$

 pactl infoの実行には、pulseaudio-utilsが必要、pulseaudio -DにはPulseAudioが必要ということでpulseaudioをインストールすれば、pulseaudio-utilsも入るでしょとやってみると思った通り。

 もちろん事前に接続はしてあってのことですが、既にデフォルトソース(マイク)が、[UCAM-C0220F-02]というElecom製Webカメラになっていました。

trixie_opizero3:~$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 2: ahubhdmi [ahubhdmi], device 0: ahub_plat-i2s-hifi i2s-hifi-0 [ahub_plat-i2s-hifi i2s-hifi-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 3: UCAMC0220F [UCAM-C0220F], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
trixie_opizero3:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: audiocodec [audiocodec], device 0: CDC PCM Codec-0 [CDC PCM Codec-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: ahubhdmi [ahubhdmi], device 0: ahub_plat-i2s-hifi i2s-hifi-0 [ahub_plat-i2s-hifi i2s-hifi-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
 
trixie_opizero3:~$ arecord test.wav
Warning: Some sources (like microphones) may produce inaudible results
         with 8-bit sampling. Use '-f' argument to increase resolution
         e.g. '-f S16_LE'.
Recording WAVE 'test.wav' : Unsigned 8 bit, Rate 8000 Hz, Mono
^CAborted by signal Interrupt...
trixie_opizero3:~$ aplay test.wav
Playing WAVE 'test.wav' : Unsigned 8 bit, Rate 8000 Hz, Mono
trixie_opizero3:~$
 

 arecord -lでもElecom製Webカメラ[UCAM-C0220F-02]がcard 3として認識されており、先の通り、デフォルトソースになっているので-Dオプションなしのarecordで録音でき、再生の方も-DオプションなしでUSBスピーカーから再生されました。

 Bookworm時点で事前にカーネル類をアップグレード対象外にしておいたことで、そうしなかった時に要した復旧作業も一切なく、trixieにアップグレード後もWebカメラ内蔵マイクとUSBスピーカーを録音・再生に使用できました。

 この検証結果から、前回の微妙な失敗の原因と踏んだ想定も、対処法も正解だったことがわかりました。

ホーム前へ次へ