Orange Piの内、今夏デビューしたてのOrange Pi Zero 3 RAM4GBとOrange Pi Zero 3用オプションセットを買ってみたので早速レビューとちょっとした検証をしてみました。
技適対応ではないので内蔵Wi-FiとBluetoothは使わず、付属のWi-Fiアンテナを外し、LANケーブルで有線接続します。
結論から言うとUSBが2.0のみとは言え、Orange Pi Zero 3は、パソコンとしても十分対応でき、なんでも来いな感じ。
内容について1つだけ先に触れておくとOrange Pi Zero 3でオンボードのSPI FlashメモリからのUSBブートが可能かはともかく、後述の通り、ラズパイ2Bのように起動用としてmicroSDカードを使い、システム用としてUSBデバイスをブートすることはできましたよ。
ただ、気になることもあって各ボードリリース時は同時期の最新である模様のOrange Pi OS、ベースとなるディストロ同様にマイナーバージョンのアップデート等もなされるのか、そしてOrange Pi専用リポジトリ内のパッケージ群も、何れもどのくらいの期間、更新され続け、フレッシュなものなのか、LTS版とそうじゃないボードの違いとか。
なんなら、Armbian等サードパーティ製という話もあれど、Armbianも中華っぽく、また、Orange Pi Zero 3が新しいからか、RAM4GB用に対処しても尚、今日時点、起動できなかったので。
アルミケースに入れた(アルミプレートでサンドイッチにした)Orange Pi Zero 3。
さすがにアルミプレートがあるかないかで結構、触った時の温度の違いを感じます。
ケースに隠れて見えませんが、オプションセットにあったシリコンパッドもSoCとLPDDR4 RAMに貼ってます。
一般的なサイズと思われるUSBメモリと並べてみるとUSBメモリの長手方向の方がアルミケース入りのOrange Pi Zero 3の一辺より大きいことがわかります。
ちなみにOrange Pi Zero 3 H618ユーザーマニュアルにもありますが、micro HDMIポートとType C電源ポートの位置と距離からして100均で売ってるような幅広のmicro HDMI-HDMIアダプタだと思いっきり干渉して使えないので要注意。
アルミケースに入ったOrange Pi Zero 3に13ピン拡張ボードを装着。
熱くなるUSBドングルとか使わなければ、拡張ボード込みのファン付きケースじゃなくても良いよねと思っての本体用アルミケースと拡張ボード。
とは言え、筐体兼放熱板でもあるアルミプレート上にあり、温かい熱は上昇することもあって電源投入しているだけで拡張ボードもほんの少し生温かい感じ。
電源投入後、数時間経過、室内気温33度ほどで日差しの当たる日中の窓を開放した窓際で拡張ボードを装着したOrange Pi Zero 3ボードを手持ちの非接触温度計で計測してみると拡張ボード上が約41度、裏面のアルミプレートが約38度。
ちなみにsensorsコマンドの出力結果は、CPU:48.9度、GPU:49.1度、DDR(RAM):49.5度、VE:48.1度。
Orange Pi Zero 3用に買ったセットは、次の通り。
Orange Pi Zero 3用でもあるとは言え、Zero 3については、接点が他の機能に使われているとかで拡張ボード上のマイクは使用不可とのこと。
尚、microSDカードは、パッケージやカード上の印字からするとSanDisk製でした。
ビス、ナット、スペーサーは、各1個おまけ付き。
SoCは、Allwinner H618、CPUは、ARM Quad-core Cortex-A53 1.5GHz。
GPUとしては、Mali G31 MP2搭載。
が、ユーザーマニュアルによれば、現在対応中のLinuxカーネル 5.4|6.1では、Mali GPU、Video codec、TV-outについてはドライバ未対応?不適合?なようです。
RAMは、LPDDR4 1GB/1.5GB/2GB/4GBのラインナップ中、今回は、4GBをチョイス。
オンボードストレージとして16MB SPI Flashがあり、HDMI対応ディスプレイさえ接続してあれば、電源投入だけでブート確認できるようにとデフォルトでミニマムなLinuxが書き込み済み(ネットワーク接続機能はない模様)。
SPIフラッシュブート時のミニマムLinuxって、これのこと...かな?
microSDを挿入せず、赤LED点灯、消灯、緑LED点滅後、表示されたのがこの画面。
それとも、これはエラーからのレスキューモード?
シェルは、/bin/ashらしい。
存在しないコマンド打ったら、[/bin/ash xxx: not found]って表示されたので。
コマンド類には、容量を大幅に節減できるbusyboxを使っている模様。
poweroffやrebootはあるけど効かない、exitするとカーネルパニックになるけど...まぁ起動確認ということなら、こんなもんで十分か...な?
Opi Zero 3を自作中のテレビドアホンの親機にしてみようかとタッチパネル買って、いろいろやったあと、電源ショートか!?って状況になり、なり行きでmicroSD入れずに起動、期せずして表示された次第。
1台めのOpi Zero 3を買った当初、ラズパイ400で使ってる液晶で何度かSPIブートを試した際はできなかったんですが...。
仮にこれを書き換えたところでSPIからUSBブートというのは、できるとしてもかなり険しい道のりな気配(前・後述の通り、microSDからUSBデバイスのチェーンブートは可)。
microSDカードインタフェース。
10M/100M/1000M有線ギガビットイーサネットと技適なしの無線オンボードWi-Fi 5/Bluetooth 5.0。
GPIO26ピン、13ピン、デバッグ用UART 3ピン。
CPU、GPU、RAM、VE用に温度センサー4つ搭載。
本体にmicro HDMIポート、拡張ボードに3.5mmオーディオジャック、(Zero 3では使えない)マイク。
本体にUSBポート x1、拡張ボードにUSBポート x2(拡張ボードを使用しない場合、13ピンからUSB出力可)。
拡張ボードには他に主にAndroid用とされる赤外線受信センサーもあり。
電源ポートは、5V3A Type-C、PCB(基板)サイズは、50mm x 55mm。
対応OSは、公式Orange Pi OSとしては、Android 12 TV/Debian11/Debian12/Ubuntu22.04/Ubuntu20.04、他にサードパーティ製もある可能性あり(リリースしたてホヤホヤのZero 3には、まだ対応できていないケースもありそう)。
スペックリストのあるページとは少し異なり、http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-Zero-3.htmlによると、今日時点、公式Orange Pi OSとしては、Orange Pi OS(Arch)、Ubuntu、Debian、Androidの各イメージとAndroidソースコード、Linuxソースコードがあります。
この記述の仕方からしてArch Linuxベースこそが、公式の中の第一候補という印象を受けます。
が、別途、サードパーティ製としてArmbian、kali、raspberry-pi-osがあります(が、サードパーティ製への質問は各サードパーティへとのこと)。
これらは、公式・サードパーティ製共にOrange Piサイドで作ったイメージのようです。
筆者は、この中から、Debian bookwormのサーバイメージを選択、インストールしました。
と言うか当初、Orange Pi Zero 3 RAM4GB購入・動作確認にあるようにArmbianのサーバイメージを選択、githubに飛び、RAM1GB|2GB兼用イメージを取得、1.5GBと4GBはブートローダ(ブート手順)が異なるらしく、記述通りに追加作業をして対処するとマウントできなくなり、GPartedなどで修復を図ると成功するも起動に至らず、いち早い起動確認を優先すべく、続いてDebianを選択したという経緯があります。
新たに買って今日届いたOrange Pi Zero 3 RAM2GB用microSDカードにArmbianイメージをddしたところ、あっさり起動しました。
尚、イメージファイルは、約7ヶ月前、このページのRAM4GB用に圧縮ファイルをダウンロードした際、全RAMサイズ用が含まれ、同梱されていた1GB/2GB用と(若干サイズが異なるのが気にはなるものの)同一バージョンの同一ファイル名でした。
同じOrange Pi Zero 3用Armbianでも何故か、OpiベンダーリリースのものとArmbian本家のコミュニティバージョン他がある(当然か、本家の方がイメージは最新である)ことが判明。
Armbianコミュニティバージョンのダウンロード・初回起動については、Orange Pi Zero 3にArmbian参照。
先日、自作スマートスピーカーで使っていたDebian Bookwormサーバ版を入れたRAM4GBとArmbianを入れたRAM2GBを入れ替えました。
そして数日前からRAM4GBのOrange Pi Zero 3にraspberry-pi-osをddしてみると、やはり、あっさり起動しました。
尚、Debian Bookworm版と違い、RAM4GBと言えど何ら追加作業を要することなく、ddしただけでOKでした。
サードパーティ製Kali LinuxをOrange Pi Zero 3 RAM4GBに入れてみたところ、RAM1.5GBと4GBについては、追加作業が必要でした。
公式・サードパーティ共に各OSも同様でリンク先からRAM別に対応するものを選んでダウンロード・展開する必要があります。
また、全ては確認していませんが、たぶん、それぞれにLinuxカーネル5.4版と6.1版、少なくともDebian/Ubuntuについては、各OSバージョン2通り、更にサーバ版とデスクトップ版(Xfce)などもあるでしょう。
Debian bookwormのサーバイメージをとダウンロードしてみたところ、[The image of the linux6.1 kernel version-20230915T003125Z-001]から002/003/004/005と5つのzipファイルがダウンロードされました。
更にその中に2つずつ程度、7z圧縮されたものがあります。
アーカイバで確認すると筆者が必要とするイメージは、[The image of the linux6.1 kernel version-20230915T003125Z-005]にありそう、RAM1GB|2GB用と4GB用があり、それらは更に7z圧縮されており、常用しているEngrampaでは未対応なのでFlatpakで入れてあったPeaZipで4GB用の7zを展開、伸長。
当該OSイメージをオプションセットにあったSandisk 64GBのmicroSDカードにdd。
この時、イメージサイズのパーティションとして書き込まれるわけですが、便利なようなそうでもないような、仮に事前にサイズ変更しておいたとしても初回起動時にデバイス容量いっぱいまでファイルシステム共々パーティション自体をも自動で拡張してくれちゃいます。
ただ、その後、電源OFFしてGPartedなどで縮小することはでき、次回起動時からは、縮小したサイズにはなります。
ちなみに当初、何度かやったArmbianイメージ書き込みでRaspberry Pi Imagerで[カスタムイメージ]を選択してやってみましたが、簡単で快適でした。 => が、やはり、ddした方が良いかも...な事象に遭遇。
ユーザーマニュアルにある通り、Orange Pi Zero 3起動前にイメージを焼いたmicroSDをマウント、boot/orangepi_first_run.txt.templateをorangepi_first_run.txtとしてコピー、中身を編集することにより、事前に初回起動時のみ有効なネットワーク設定をすることができるようになっています。
マウントではなくOrange Pi Zero 3起動後に/boot/orangepi_first_run.txt.templateを...もできますが、その場合は、編集保存後、一度、microSDカードを抜いて、再度、microSDカードを挿入して起動させる必要があると明示されています。
設定可能な内容は、初回起動後、orangepi_first_run.txtファイルを削除するか否か、デフォルトのネットワーク設定を変更するか否か(このファイルを使う時点で設定は1必須と思われるもこれいかに... => と思いきや、マニュアルに編集するなら1必須と書いてありました)、有線・無線何れを有効にするか、無線を有効にする場合、SSID/PASSPHRASE設定、静的(固定)IPにするか否か、する場合、IPアドレス、ゲートウェイ設定。
ただ、「初回起動」というのが、最初の1回だけなのか、このファイルを配置した都度1回ということなのか曖昧ですが...と思いましたが、前述のように当該ファイル編集後、明示されていたmicroSDカードの挿抜からしてmicroSDカード挿入都度1回ってことっぽいですね、きっと。
=> [2024/05/05] と思いきや、マニュアルをよく読み直してみたら「SDカードにイメージを焼いた後の初回起動」「ここんとこ特に注意しとけよ」の旨、明示されていました。
また、この時、有線・無線の設定については、何れか一択とのこと、理由は、「だって両方使う必要ないもんね...」と書いてあります。
=> [2024/05/05] 運用後は思いつかないけど、少なくとも慣れない初期設定中は、遠回りになるから、両方でも使えるようにしてほしい...。
この後、HDMIディスプレイやsshで他マシンのディスプレイでログインできるようになります。
が、bashユーザーで端末を使う場合、上下矢印キーで履歴を移動できるのは当たり前、それが上下キーを押したら[[A...みたいに文字化けした!なんてことがないように予めchsh(chANGE shELL)コマンドを実行、再ログインしておきましょう。
当該ユーザー自身のshellを変更する際は、sudoは不要です。
これは、Orange Piなのか、Orange Pi Zeroなのか、他でもそうだったか?/bin/shは、bashではなく、dashにシンボリックリンクが張られており、履歴機能がない為です。
一度、ログアウトして改めてログインしないと変更が反映されないので要注意。
ユーザーマニュアルによれば、Orange Pi Zero 3のrootのデフォルトのパスワード、そして既に作成されているユーザー名及びパスワードは、[orangepi]です。
事前設定することなく、デフォルトの状態では、適切で起動可能なイメージが焼かれたmicroSDカードを挿入、電源投入、起動した時点で有線LANが有効になっており、DHCPで配布されたIPアドレスが割り当てられます。
HDMIケーブルを介したディスプレイ+USBハブ or 拡張ボード+USBキーボード+USBマウスに接続していない場合は、他のマシンがあれば、起動前後にnmapなどでLAN内に増えたIPアドレスを見つけることで確認できます。
LANケーブルを介して有線接続した状態で起動するとデフォルトでsshが有効となっているとのことで他のマシンから即、ssh USER@IP_ADDRESSやユーザーが同一なら、ssh IP_ADDRESSでssh接続できます。
後々のことを考えるとorangepi-configからもインストールでき、基本、接続先IPアドレスを気にせずに済むavahi(ホスト名.local等でアクセスできるbonjour的なもの)を使ったり、IPを固定したりすると便利でしょう。
ただ、初回、ssh接続する場合、sshした方の~/.ssh/known_hostsにホストが登録されてないよエラーが出ると思うので、その時は、そこにある通り、ssh-keygen -f ...した後、ssh接続します。
デフォルトのログインパスワードは、Orange Pi Zero 3の起動と有線LANの通り。
今回使用したLinuxカーネルとOS(Orange Pi公式OSの1つDebian)であるOrange Pi 1.0.0 Bookworm with Linux 6.1.31-sun50iw9の表記もあります。
Memory usageに[of 3.84GB]とあるのでRAM4GBバージョンであることがわかります。
尚、df -hしてみるとイメージ書き込み済みのmicroSDカードは、/dev/mmcblk0p1となっています。
ここまででHDMIケーブルを介したディスプレイとUSBキーボード・マウスか、ssh接続で他マシンからアクセスできるようになったところでセキュリティ対策の一貫として次の作業を行っておくのが賢明でしょう。
ただ、新規ユーザーがsudoersファイルに登録されず、新規ユーザーではsuやsudoすら使えない可能性があるのでsudoも使えるorangepiユーザーでという手もありますが、最小限の作業だけは注意しつつ、rootでログインして行なうのが良いでしょう。
rootでログインした前提でrootパスワードの変更と新規ユーザーの追加とsudo設定、orangepiユーザーの登録グループをNEW_USER_NAMEに引き継ぎ設定。
usermod -aGの引数の[...]は、もちろんそのままではなく、該当するグループをカンマ区切りで列挙します。
ただ、後述のように直接/etc/groupを編集、orangepiユーザーの所属グループを新規ユーザーに引き継げば、ログアウト/ログオンでid結果も反映されるのでusermod -aGする必要はありません。
これで新規ユーザーNEW_USER_NAMEでログインしても作業できるでしょう。
新規ユーザーを作成した後、当時のラズパイだと新規ユーザー作成とユーザーorangepi削除と後始末のようにuserdelから始められました。
が、今どきは、どうやら、systemd --userの関係でそれだとエラーになるので念の為、これらファイルのバックアップをとりつつ、/etc/group、/etc/passwdを直接編集します。
内容としては、orangepiユーザー/グループのuid=1000/gid=1000をそれぞれ新規ユーザーに割当てつつ、orangepiグループ及び所属グループのorangepi|ユーザーを削除、/home/orangepiを削除。
新規ユーザーNEW_USER_NAMEのホームディレクトリ内ファイルの所有権としてgid/uidが1001となっていたら、1000とすべく、chown。
前段の/etc/passwdや/etc/group設定が合っていれば、gid/uidでなくNEW_USER_GROUP:NEW_USER_NAMEでいけます。
orangepiユーザーでしばらく運用した後に新規ユーザーを作成、移行しようと思うと、結構、面倒なので最初にやっておくのが吉。
orangepi-configは、一部システム設定やソフトウェア設定ができるキャラクタベースのグラフィカルツールです。
起動方法の変更やUART設定、ネットワーク設定、タイムゾーンや言語やhostname設定、一部ソフトウェアのインストールなどができます。
Orange Pi Zero/Zero 2/Zero 3用の13ピン拡張ボードには、USBポートが2つ、3.5mmオーディオジャック、赤外線受信センサーと(Zero 3では使えない)マイクが1つずつ搭載されています。
黒い部分は、やや見づらいですが、写真左からマイク、オーディオジャック、USBポート、USBポートの写真右奥にあるのが、赤外線受信センサ。
拡張ボードに更になんとなく3ポートドングルタイプUSBハブを介してUSBポートとオーディオジャックに3.5mmオーディオプラグ付きのUSBスピーカー(キャンドゥの500円スピーカー)を接続してみたところ、何ら設定することなく、音源を再生できました。
ちなみに再生してみた音源は、サンプルとしてよく使う/usr/share/sounds/alsa/Front_Center.wav。
当時は、Orange Piベンダー公式OSの1つDebian Bookwormベースで何もせずとも簡単にできたスピーカー出力。
なぜか、Armbianではベンダー版もArmbianコミュニティ版でも、また、raspberry-pi-osでもできないまま、Kali Linuxで試行錯誤、結果、USBサウンドアダプタ+スピーカーで出力させるに至り、素直にはいきませんでしたが、同様にすれば、きっと他でもいけるでしょう。
特定には至っていませんが、素直にできないのは、PipeWireやPulseAudioなどのオーディオサーバがALSAと、もしくは、ALSAが唯一つながる3.5mmフォーンプラグ+USBスピーカーとうまく連携できていないか、はたまたALSAが内部オーディオ|システム出力デバイスに関してのみサウンドサーバに投げる情報に間違いがあるなどのバグじゃないかと。
PipeWireやPulseAudioなどオーディオサーバの音量調節パネルの再生タブ上などには、再生時にデバイスや動的な出力音量を示すインジケータが表示されますし、USBマイクやUSBサウンドアダプタ経由では問題ないので。
Orange Pi Zero 3に未フォーマットながらSSD 1TBを接続してみました。
SSDケースは、Groovy model.SSDCASE-U31G1-GM。
結果、lsusbでは、[152d:0578 JMicron Technology Corp. / JMicron USA Technology Corp. JMS578 SATA 6Gb/s]として、dmesgではsdaとして認識されました。
中身の入ったUSBメモリなども挿してみたところ、lsusb、dmesg、fdiskに相応の結果が表示されました。
当然ながら、ストレージとしてUSB接続のHDDやSSDは使えるようです。
Orange Pi Zero 3でmicroSDカードからUSBメモリやバスパワーの2.5インチHDDをチェインロードしてUSBブート(要はラズパイ2Bみたいに)してみました。
ちなみに今回使ってみた2.5インチHDDは、なんと16年前に買った先代dynabookに標準搭載されていたTOSHIBA製80GB、HDDケースは、ストレージとして使った際と同様のGroovy製。
当然、SSDもいけるでしょう(未フォーマットのSSDも持ってるのに手抜きで試してませんが)。
microSDカードにシステムまで入れて運用というのは避けたい、せめて、購入から7年以上経過、常時起動じゃないながら各種サーバとして今尚、利用中で、microSDカード共々健在なラズパイ2B v1.1同様にシステムはUSBデバイス(SSD)に入れたいと思ったので。
そもそも原理的には容易にできるはずなのにOPi Zero 3に限らず、ZeroやZero 2ですら情報がないのが不思議と思いつつ、やってみると想定通り、簡単にできました。
尚、この場合、orangepi-configなどでブート方法の変更などする必要はありません。
要はイメージを書き込んだmicroSDカードの/boot/orangepiEnv.txtとUSBデバイス側の/etc/fstabのUUIDを書き換えるだけです。
まず、USBメモリ(やSSD、HDD)にddなどでOrange Pi OS(ここではdebian bookworm server)を書き込みます。
すると先に焼いたmicroSDカードとUSBメモリでUUIDが重複するので(同一イメージだとどれでもそうなるっけ?)USBメモリ側のUUIDを新たに生成すべく、[tune2fs -U random デバイス]。
ラズパイのように起動用とシステム用とパーティションが2つならmicroSDのシステムパーティションを削除すれば、UUIDが同一なのは好都合なのですが、OPi Zero 3ではパーティションが1つで、そうはいかないので。
尚、tune2fs前後でblkidしておくと変化を比較できます。
ちなみにLinuxでは、microSDなどは/dev/mmcblk0p1のようになる一方、1つめのUSB機器は、/dev/sda、2つめは、/dev/sdb、3つめは/dev/sdc、添字の[1]は1つめのパーティションのようになります。
よって例示の/dev/sda1は、Orange Pi Zero 3で1つめのUSB機器と認識されているケースを想定してsda、少なくとも今日時点でOrange Pi Zero 3のOSイメージにおいてはパーティションは1つのみなので添字は1としています。
もし、環境が異なるのであれば、それに合わせる必要があります。
続いて、今、microSDカードのみで起動していると想定すると/bootにorangepiEnv.txtがあるので[rootdev=UUID=...]行のUUIDを先ほど生成したUSBメモリのUUIDに書き換えて保存します。
更にUSBメモリをマウントして起動ファイル/etc/fstabのUUIDも同様に変更、保存します。
あ、USBメモリじゃなくてmicroSDカードの方をtune2fsすれば、こんなまどろっこしいことしなくても、そのまま、いけましたね...。
そしてOrange Pi Zero 3を一度、poweroffするなどし、電源を落とします。
これでバッチリ、Orange Pi Zero 3にmicroSDカードとUSBメモリを挿し、電源を入れるとmicroSDカードが起動すると同時にボードの赤いLEDが点灯、USBメモリが起動すると赤のLEDが消灯しつつ、緑のLEDが点滅、USBメモリにもアクセスランプがあれば、同様に点滅し、USB 2.0ポート(とUSBデバイスの性能や劣化があればその具合等)に相応な時間でUSBメモリやUSB接続のHDD、SSDから起動します。
他マシンから初めてsshする場合は、ssh接続の項で説明した通り、ssh-keygen -f...した後、ssh接続することになるでしょう。
ここまでの手順を踏んだなら、USBメモリから初めて起動した場合、ユーザーは、rootかorangepiのみ、パスワードは何れもorangepiでないとログインできないデフォルトの状態なのでUSBメモリから起動したことの確認にもなります。
現時点でOrange Pi Zero 3の使いみちは決まっていない、使うとしても検証くらいということでデスクトップ環境でも入れてみようかと。
公式Orange Pi OSのデスクトップと言えばXfceですが、デスクトップ環境を一通り入れる癖のある筆者でも利用となると、ご無沙汰感がハンパないので入れるにしてもサーバ版Bookwormから他のデスクトップ環境をと思っていました。
というわけで4コアCPUでRAMも4GBあることですし、今回は、最もお気に入りのCinnamonを入れてみることにしました。
と思いきや、インストール後、VNC接続してみるとデスクトップもメニュー等も表示されるも~/.xsession_errorsによれば、dbus-launchを起動できないという理由で[you are currently running in fallback mode]とポップアップ表示されるので、とりあえず、MATEに変更。
Debianでは、task-*-desktopの書式で指定すると当該デスクトップ環境一式をインストールしてくれるのでOrange Pi OS版もいけるでしょうと踏んで。
併せて日本語入力についてはともかく、日本語表示できるように任意の日本語対応フォントをインストール。
環境変数LANGの設定や必要ならVNC接続された時に表示するデスクトップを指定すべく、.vnc/xstartupを編集するなどして対処します。
例では、MATEを指定しています。
日本語入力関連についても、このファイルで設定できるはずです。
デスクトップ環境と併せてVNCサーバをインストール、vncserverを1度起動すれば存在するはずですが、ない場合など雛形として/etc/X11/xinit/xinitrcを~/.vncディレクトリにコピーするのもありでしょう。
端末上でのインストール状況や/etc/apt/sources.listを見るとbookwormのリポジトリは、かのファーウェイ、huaweicloud.com上、dockerは、かのアリババ系クラウドサービスaliyun.comにある(huaweicloud.comやaliyun.comのサーバを利用している)ようです。
今回、HDMIディスプレイは使っておらず、ssh接続しているのでデスクトップは、VNCでというわけで任意のVNCサーバからtightvncserverをインストール。
Orange Pi OSでは、ディスプレイマネージャはlightdmのようなので次回起動時有効になるようにsystemctl enable。
でOrange Pi Zero 3を再起動。
Orange Pi Zero 3を再起動したら、このようにしてVNCサーバを起動。
VNCサーバ側マシンでAvahiをインストール済みでかつ、LAN内の別のマシンにVNCクライアントがある前提で、このようにしてVNCサーバに接続。
もちろん、*.localでなくともIPアドレスでも可、VNCクライアント側のユーザーが同名ならANY_USER@は省略可。
これで他のマシンからVNC越しに文字化けすることもなく、Orange Pi Zero 3上のMATEデスクトップが表示されました。
が、なぜか、[システムポリシーにより全ユーザーでネットワーク設定できません]とか、[システムポリシーによりWi-Fiスキャンは阻止されます]などと表示され、rootパスワードを要求されます。
bullseyeまでは、[/etc/polkit-1/localauthority/50-local.d/*.pkla]と適切に設定された.pklaファイルをおけば、bookwormからはpolkitに変更があり、[/usr/share/polkit-1/rules.d/*.rules]や[/etc/polkit-1/rules.d/*.rules]のように.rulesファイルを置いてaddRuleやaddAdminRuleなどの適切な関数を書けば、対処できる模様。
ただ、このbookwormにおいては、より参照優先度が高いと思われる[/usr/share/polkit-1/rules.d/]に既に[org.freedesktop.NetworkManager.rules]ファイルがあるのに、こうなる謎に、どハマり。
というか、その設定は、当該マシン上のユーザーの話で、VNC越しについては、他に設定が必要なんじゃないかと思っていますが、これ如何に。
さておき、ポップアップが邪魔ながらも操作はできるので適当にいじってみると、さすがCPU4コア/RAM4GB、デスクトップ操作もサクサク、快適です。
Orange Pi Zero 3ベンダーバージョンBookwormのxfceイメージ(Orangepizero3_1.0.2_debian_bookworm_desktop_xfce_linux6.1.31_4gb)をRAM4GBボード用にdd、起動してみました。
マウスの左用設定が効かないものの、タッチスクリーンのタッチ操作もオーディオ再生も安定しています。
使用目的からオーディオ再生とタッチスクリーンのタッチ操作が安定しているものを探し、ベンダーバージョン及びコミュニティバージョンのサードパーティArmbian、raspberry-pi-os、Kali Linuxを経て結果、一番最初に起動確認しつつも、タッチパネルについては購入前で機能確認をしていなかったOrange Pi Zero 3ベンダーバージョン(Debian )Bookwormのxfceイメージにたどり着き、というか戻ってきました。
オンボードWi-Fiが技適を通っていないOrange Pi Zero 3含むOrange Pi系、無線デビューが遅かったこともあり、自身最初で最後にして2つも持っているWi-Fi USBドングルBUFFALO WLI-UC-GNM2を使い、Orange Pi Zero 3上でWi-Fi接続してみました。
ドライバは既にあるようでlsusbにもバッチリ認識されていました、なんせ少なくとも購入当時の7年前にはDebian、Fedora、NetBSD等で使えたもの、Orange Pi Zero 3とは言え、OSはDebian bookwormベースのOrange Pi OSなので当然ですかね。
方法は、sudoは必要だったものの、CentOS7でステルスSSIDへ接続する方法の通りで、あっさり接続できました。
尚、wifi-sec.key-mgmtの選択肢は、[none, ieee8021x, wpa-psk, wpa-eap, wpa-eap-suite-b-192, sae, owe]だけな模様、また、wifi-sec.pskのPASSPHRASEは、wpa_passphraseコマンドによる生成前のオリジナルでないとエラーになりました。
Debian BookwormベースOrange Pi OS/Orange Pi Zero 3のorangepi-configから[Network] => [WiFi]を開くと[Wi-Fi](内蔵)ではなく、[USB Wi-Fi]間違えて[USB Wi-Fi]ではなく、[Wi-Fi](内蔵)が有効になっていることがわかります(当該及び周辺のSSIDはモザイク)。
当初の画像では、[USB Wi-Fi]「も」有効になっていることがわかるだけで[USB Wi-Fi]「がアクティベートされて(有効になって)いる」状態ではありませんでした(*|アスタリスクが、[Wi-Fi](内蔵)の方の[wlan0]に付いていた)。
Orange Pi Zero 3も2台めを既に買い、3台めも...という中、改めて設定してみてハッとし、「[USB Wi-Fi]がアクティベートされて(有効になって)いる」状態の画像を取り直しました。
今回は、マニュアルに「有線・無線の選択は、SDカードに焼いた直後の初回起動時に限られる」とあるので、microSDカードに改めてイメージをddし、マウント、boot/orangepi_first_run.txtを*.templateからコピーにより作成、編集、有線でなく、無線を、固定IPを使うよう設定し、Wi-Fi USBドングルをUSBポートに挿しつつ、LANケーブルなしでOrange Pi Zero 3を起動、今回は、HDMI接続のモニタでログインすることにしました。
尚、今回、USBメモリにチェーンブートさせていたのでUSBメモリはそのままに、同一イメージを焼くとUUIDが重複することから、手間の少ないmicroSDカード側をtune2fsし、Orange Pi Zero 3ボードにセットして起動、初期設定は済ましてあったので即、作業に入れました。
ホントに初めて起動した場合でLANケーブルによる有線接続の場合は、ssh接続まで至り、初期設定できるのですが、いざ、無線の場合、有線と排他で有線は使えないため、内蔵ですら、起動・ログイン後に[アクティベート(≒有効化)]作業が必要となり、ネット接続できていない状態なので実質、HDMIモニタ接続(端末操作だけでもキーボード、GUIならマウス)か、シリアルポート接続が必須となってしまい、その上で初期設定などを行うことになります...。
無線のアクティベートですが、sudo nmtuiとし、CLIながらグラフィカル風に設定すると楽です。
すると[接続の編集/Edit a Connection]/[接続の有効化/Activate a connection]/[ホスト名の設定/Set system hostname]/[終了/Quit]などが選択できる画面が表示されます。
ここで[接続の有効化/Activate a connection]を選択すると前掲の画像のように有線と内蔵Wi-Fi、接続してあって対応ドライバがあるものであればUSB Wi-Fiが選択肢として表示され、USB Wi-Fiについては、自身のものだけでなく、近隣のSSIDも表示されます。
USB Wi-Fiで自身のSSIDを選択した状態で右矢印やタブキーで<Activate>を選択、[Enter]すると当該行の先頭にアスタリスク(*)が付きます。
この瞬間から(orangepi_first_run.txtで固定IPが指定されていればそれ、そうでなければDHCPで自動配布され、)他デバイスなどからssh接続できるようになります。
と思いきや、orangepi_first_run.txtで指定したはずの固定IPが設定されておらず、改めてログイン後、sudo nmtuiから当該SSD用の接続設定を開くとIP設定が[自動]となっており、固定IPやゲートウェイを設定の上、nmtuiを終了し、reboot、改めてログインする必要がありました。
うっかり、未確認ですが、もしかすると内蔵の方に固定IPが割り当てられていたのかもしれません。
ちなみにホスト名を変更する必要がある場合もsudo nmtuiすると[ホスト名の設定/Set system hostname]ができ、再ログイン時から有効になり、楽です。
当記事執筆当初も試し、lsusbで認識され、ネットワークインタフェースも割り当てられるものの、wpa_supplicant.confを用意、wpa_supplicantコマンドを実行してもどうにもIPが配布されずじまいで後回しにしていました(ん?もしかして単にIP配布すべく、dhcpcdとかdhclientとかすればいけた?)。
が、ここに来て立て続けに2台、5年経過のラズパイ3B+をショートさせて壊してしまった、かつ、目処は立ちつつも自身の腕では修復は厳しそうな中、動向を見るに開発国からして、まして想定しているガジェットからしてOrange PiやBanana Piは微妙かなとも思いつつ、ラズパイの代替として高性能でコスパが良いとなるとダントツ筆頭候補というジレンマ。
他方、ラズパイ3B+健在当初は別にしようと思っていた自作予定のラズパイ防犯カメラとESP32S3カメラによるドアホン。
それをドアホン子機用スイッチボックスに全てまとめようか、とは言え、ラズパイ3B+がない今、他...と考えてみれば、Orange Pi Zero 3やBanana Pi M2 UltraやM2+あたりは、より小ぶり、内蔵Wi-Fiがあっても技適を通っていないのが普通な中、手持ちで済まそうと思うとLANケーブルより無線LANドングルの方が都合が良い。
というわけで取り急ぎ、ここにきて手持ちのOrange Pi Zero 3にWi-Fiドングルで実際に無線通信できるのか、念の為、確認してみた次第。
まぁ、IEEE802.11n/g/bな規格値で最大150Mbpsと今となっては通信速度遅いんですけどね、WLI-UC-GNM2。
とは言え、その昔、換装前のRAM512MBでは厳しかった動画視聴も換装後のシングルコアCPU/RAM2GBマシン+WLI-UC-GNM2で動画視聴が比較的快適にできたのでマイコンかつ、メーカー違いはあるのせよクアッドコアCPUも普通になった今、RAM2GB〜4GB程度あれば、WLI-UC-GNM2で映像を扱っても大丈夫でしょう。
それより、同じ無線LANドングルが2つあるとか、長らく使っていなかったとは言え、何れも購入から7〜8年経過してることの方を心配すべきか...。
sysfsが非推奨となり、現在有力なlibgpiod/libgpiod2に移行中で過渡期にある関係でLinux界隈では、よく知られたGPIO操作用ライブラリにも影響があり、何かと悩ましい今日この頃。
自身は、同じ理由でラズパイ3B+を2台もショートさせ、その間に自作スマートスピーカー機能を移行したOrange Pi Zero 3においてラズパイで実装していたboot/reboot/shutdownボタン回路の実装で本件に直面。
結果、WiringPiコマンド+Shellスクリプトで暫定的に凌ぐことにしました。
自作予定品への採用検討やラズパイ2台ショートさせたりする中、どうもOrange Pi Zero 3では素直にI2SのDAC+アンプボードが使えなさそうに思われたのでシンプルなアンプボードを使ってみたらいけました。
拡張ボードを使わないことを想定しているので13ピン側の5V/GND/LIENOUTR(ボードピン7)/LINEOUTL(ボードピン番号8)を使って。
=> Orange Pi Zero 3+PAM8403アンプボード+アンプなし100均セリアスピーカーで音源増幅再生。
=> 翌12/12、4Ω/3Wスピーカーと8Ω/2Wスピーカーで試したところ、5V-GND間に47μFのコンデンサを入れた方が(配線の状態によるノイズや音割れなど何かと)安定する気はしました。
尚、26ピン側と13ピン側のピンアウトにおけるボード番号は、後掲の各種画像(いずれもhttp://www.orangepi.org内から拝借)の通り、「逆になる」(共通点で言えば、何れも電源側からのカウントとなる)ので要注意。
Orange Pi Zero 3全体(26ピン+13ピン)のピンの並び。
26ピン側の3.3Vや5Vは、画像向かって「左上」、13ピン側の5Vは、画像向かって「右下」。
Orange Pi Zero 3 13ピン側ピンアウト。
前掲の全体のピンアウト画像と異なり、この13ピンのみの配線図では、5Vが上にありますが...
13ピン側ボードピンのピン番号は、5Vのある「イーサネットポート、USBポート、HDMIポート...(前掲全体画像からすると下)側から」カウントして1〜13。
Orange Pi Zero 26ピン側ピンアウト(3用がhttp://www.orangepi.org内になかったので仮にも混乱しないよう一部モザイク処理)。
26ピン側ボードピンのピン番号は、5Vや3.3Vのある、各種ポートと「反対(前掲全体画像からすると上)側」からカウント、画像向かって左・外側の3.3Vが1、右・内側の1つめの5Vが2、順次それに続く。
すっかり忘れてましたが、Orange Pi Zero 3でもアダプタをUSBポートに挿すだけで2.4GHzマウス/キーボード(もちろん、それぞれ十分電圧のある電池入り)を使うことができました。
写真は2.4GHz無線でセットのマウスが壊れたキーボードとマウス単体(白いUSBアダプタが2個、より左はWi-Fiアダプタ、より右の白いのはmicroSDからチェーンブートされるシステム用USBメモリ)。
すっかり忘れてましたが、Orange Pi Zero 3でもUSBポートに挿すだけでUSBマイクを使うことができました。
写真のUSBハブ左側はWi-Fiアダプタ、右側がUSBマイク、更に右の白いのはmicroSDからチェーンブートされるシステム用USBメモリ。
拡張ボードがあっても同ボード上のマイクが仕様上使えないOrange Pi Zero 3だからでしょう唯一接続された有効な(USB)マイクをデフォルトとして認識するようで-Dオプションもないarecordで録音できました。
逆に連携はさせていないのか、arecord -lで表示される[カード番号,デバイス番号]を[-D plughw:]/[-D hw:]に指定すると録音できませんでした。
その点では、拡張ボード上のマイクが使えるというOrange Pi Zero/Orange Pi Zero 2とは異なるかと思われます。
Orange Pi Zero 3でもUSBポートに挿すだけでdmesg、lsusbやhciconfig -a結果にも表示、[Realtek Semiconductor Corp. USB-BT50LE]として認識され、USB BluetoothアダプタIO-DATA USB-BT50LEを使うことができました。
写真向かってUSBハブ左:Wi-Fiアダプタ/BUFFALO、中:Bluetoothアダプタ/IO-DATA、右:microSDからチェーンブートされるUSBメモリ/BUFFALO。
このIO-DATA USB-BT50LE、仕様書を見るとWindowsのみ対応とあるのはさておき、Windows 10/Windows 11への言及で「ARMには対応していない」旨が明示されていたことを買ってから知り、あれ?USBって大丈夫だよね?と少し心配しましたが、大丈夫でした。
内蔵Bluetoothの停止方法...と良い方法を思いつかないので、とりあえず、[hciconfig -a]で内蔵Bluetoothは[hci1](hci0の[Manufacturer]が[Semiconductor Corp])だったので[sudo hciconfig hci1 down]して一時的に落とし、プリインストールされているbluezパッケージのbluetoothctlでscan on/pair/trust/connect/disconnectして確認しました。
恒久的な方法が見つからなければ、[~/.profile]や[~/.bashrc]などに当該コマンドを追記しておこうかと。
というわけで先日、AliExpressで買ったミニミニBluetoothスピーカー、100均キャンドゥで買ったBluetooth ver.5.0ワイヤレスイヤホンRS-BTEMS01、ダイソーで買ったBLUETOOTH EARPHONE BT-005、1000円BluetoothスピーカーWS001をペアリング・接続し、音源再生させることができました。
そらそうだ。
ただ、なぜか、デバイスを[trust]しておかないと音質が明らかに劣化、聴けたものではなく、何れも[trust]するとクリアになりました、信頼関係って大事だね!?
自身のメインパソコンRaspberry Pi 400/Raspberry Pi OSと見比べつつ、Orange Pi公式OSの1つBookworm系においてコメントアウトしたオリジナルをsources.list.dにバックアップしつつ、ファーウェイクラウドなリポジトリをdebian.orgに変更、謎なdocker.list(のmirrors.ustc.edu.cn行)をコメントアウトして無効にしてみました。
Opi側にあるbackportsはなく、ラズパイ側にはsecurityがあった、Opi側の各種deb-srcにはnon-free-firmwareがあってラズパイ側にはなかったのでファイルを開いて修正。
とりあえず、滞りなく、正常にアップデート及びアップグレード完了。
当初、何か違いがあるかもと躊躇していたのですが、想定する使いみちにおいてArmbian、raspberry-pi-os、Kali Linuxがことごとく微妙、結局、その辺が安定していたベンダー公式Bookworm xfceイメージに戻ってくることになり、試しに思い切って変えてみることにした次第。
とは言え、ベンダー版はベンダー版で早々にxfceに関しては、マウスの左右を変えられない事象に遭遇(追加インストールしたMATEでは変更できた)、他にも何かありそうな気がしなくもありませんが。
ただ、*-sun50iw9なカーネルは、debian.org側にはないので、ファーウェイなdeb-srcを追加、debianはそのまま、もしくはコメントアウト...などどうしたら良いのやら、にわかには思いつかず...懸念は残りますが...。
raspi-configよろしく、orangepi-configは、また、orangepiEnv.txtは、Armbianではarmbian-config、armbianEnv.txtです。
性能もよく、コスパも良いから残念ではあるけど、ハードはもとより、(複数あるリポジトリがどれも中国のクラウドサービスとか、サードパーティ製も結局中華製とか)ソフトも情報を吸い上げる強制力をもつ隣の大国に依存したOrange Pi系、もう買うことはないかな。
新たにOrange Pi Zero 3 RAM2GBを買ってみると前回と異なり、Armbianで、あっさり起動しました。
届く前にイメージファイルをループバックマウントして/etc/apt/sources.listを眺めてみたら、リポジトリは、app.debian.orgでした。
よってサードパーティ製ならソフトの面では安心できそうです。
少なくともOrange Pi Zero 3においては、起動時の赤と緑のLED、何らかの事情でイメージが不適切だと赤のLEDも点灯すらしない模様。
当初、ショートさせたかと思い、焦りましたが、安定したOSを求める道すがら、microSDカードにddしたイメージが当該ボードには適切でなかっただけで他のイメージをddしたら、何事もなく、赤LED点灯、消灯、緑LED点滅し、正常に起動しました。
LEDが点灯すらしなかった時のイメージは、githubから取得したOrange Pi Zero 3用でコミュニティバージョンのArmbian、サーバ版(Armbian_community_24.5.0-trunk.667_Orangepi3_bookworm_current_6.6.31_minimal.img)とxfceデスクトップ版(Armbian_community_24.5.0-trunk.667_Orangepi3_bookworm_current_6.6.31_xfce_desktop.img)。
当初、RAM4GBボードへの追加作業をしてもダメだったことから、今回、それをしていないのが原因なのでしょうが、.dtdや.imgをチェックしてみたところ、前者はAllwinner H616、後者にはH618もあってどっちとしてコピー・上書きすべきか迷ったりで未検証。
赤LEDは、電源専用だと思い込んでいましたが、microSDカードが挿入されている場合、チェックされOKだと点灯、NGだと消灯というか、無反応となるようです。
試しにmicroSDカードを入れずに起動してみたところ、赤LED点灯、緑LED点滅後、当初、何度試みても確認できなかったSPIフラッシュ起動のミニマルLinuxと思しきCLI画面が表示されました。
先日買ったOrange Pi Zero 3 RAM1GBボードが今日届きました。
これで1.5GBを除く1GB/2GB/4GBのOrange Pi Zero 3ボードを調達したことに。
Orange Pi Zero 3のRAM2GBボードは別件でショートさせてしまったラズパイ3B+の代替として自作・運用中のスマートスピーカーで使用中、RAM1GBボードは自作中のテレビドアホン子機マイク&スピーカー制御用、RAM4GBは7インチタッチスクリーンと共にテレビドアホン親機用として使用予定。
場合によっては、RAM1GBボードとRAM2GBボードは入れ替えるかもしれませんが。