デスクトップなしのRapberry Pi OSからWeston + Pipewireの軽量なデスクトップ環境を構築してみます。
今回の内容の目標はデスクトップが表示されたら、Firefoxを起動し、Youtubeのページにアクセスし、Bluetoothのスピーカー経由で何らかの音楽を再生することにします。
環境
マシン : Raspberry Pi 5 8G
OS : Raspberry Pi OS Lite (64-bit)
スピーカー:Bose Mini II SoundLink
SDカードにRaspberry Pi OS Lite (64-bit)をインストールしていることを前提にして話を進めます。
先にWestonとPipewireについて触れておきます。
Westonに触れる前に必要となるのが、Waylandでして、Waylandはデスクトップ環境を構築する為の規約やライブラリで、WestonはWaylandを気軽に扱えるデスクトップ環境だと捉えてください。
※Waylandと似たような機能としてX11(Xorg)があります。
Pipewireは音を出す為のフレームワークになります。
Linuxで音を出すためにはALSAという仕組みがありますが、ALSAを直接使用するのは難しい為、PipewireがアプリケーションとALSAを橋渡しします。
※上記のPipewireの橋渡しの内容には例外あり
Advanced Linux Sound Architecture - ArchWiki
※Pipewireと似たような機能としてPulseAudioがあります。
最初にWestonで最低限の設定のデスクトップ環境を構築します。
下記のコマンドを実行します。
$ sudo apt install weston xwayland
xwaylandはX11で開発されたアプリケーションをWayland上で実行できるようにするものです。
続いて、Westonの設定ファイルを作成します。
$ mkdir .config $ cd .config $ nano weston.ini
weston.iniの内容は下記にします。
[core] xwayland=true [keyboard] keymap_layout=jp
Westonを起動した時にキーボードがUSのレイアウトになると面倒ですので、JPのレイアウトにしておきます。
※weston.iniの記述に関してはWeston - ArchWiki#設定をご覧ください。
weston.iniを保存したら、Westonを起動してみます。
下記のコマンドを実行してみます。
$ weston
weston.iniの記述に誤りがなければ、
このような画面に切り替わります。
左上のターミナルのアイコンをクリックすると、ターミナルが起動します。
続いて、Westonで起動したデスクトップの環境のターミナルでPipewireをインストールします。
Pipewireを使用するために下記のコマンドを実行します。
$ sudo apt install pipewire pipewire-pulse pipewire-alsa
これでPipewire経由で音が出るようになりました。
動作を確認するために下記のコマンドでFirefoxを起動します。
$ sudo apt install firefox $ firefox
Firefoxが起動しましたら、Youtube等の動画配信サービスのサイト等で任意の動画を再生して、音が出ることを確認します。
PirewireからBluetoothのスピーカーに接続出来るようにします。
下記のコマンドを実行して、必要なライブラリをインストールします。
$ sudo apt install libspa-0.2-bluetooth bluez
続いて、PirewireでBluetoothと接続する設定を行います。
$ sudo mkdir /etc/pipewire/ $ sudo mkdir /etc/pipewire/media-session.d $ sudo touch /etc/pipewire/media-session.d/with-pulseaudio
で空のwith-pulseaudioを生成します。
※PipeWire - ArchWiki#Bluetoothデバイス
$ sudo shutdown -r now
で再起動しておきます。
再起動後に
$ weston
でWestonのデスクトップを起動し、ターミナルを開き、
$ bluetoothctl
でBlueZを起動します。
BlueZが起動すると
[bluetooth]#
なプロンプトに切り替わります。
下記の操作でBluetoothのスピーカーに接続します。
[bluetooth]# power on [bluetooth]# scan on
しばらく待つと、
[bluetooth]# [NEW] Device XX:XX:XX:XX:XX:XX Bose Mini II SoundLink
のような出力があります。
XX:XX:XX:XX:XX:XXがスピーカー(ペリフェラル機器)のMACアドレスになります。
※ペリフェラル機器のMACアドレスに関してはPythonでSerial Bluetooth Terminalの動作を再現してみるをご覧ください。
[bluetooth]# pair XX:XX:XX:XX:XX:XX
XX:XX:XX:XX:XX:XXとのペアリングを行い、
Attempting to pair with XX:XX:XX:XX:XX:XX [CHG] Device XX:XX:XX:XX:XX:XX Connected: yes /** 途中省略 **/ [Bose Mini II SoundLink]# Pairing successful
のような出力があるのを待ちます。
ペアリングが出来たら、
[bluetooth]# connect XX:XX:XX:XX:XX:XX
スピーカーとの接続を行い、
Attempting to connect to XX:XX:XX:XX:XX:XX [CHG] Device XX:XX:XX:XX:XX:XX Connected: yes /** 途中省略 **/ [Bose Mini II SoundLink]# Connection successful
上記のような出力があればスピーカーとの接続が完了となります。
Firefoxを開き、Youtube等の動画配信サービスのサイト等で任意の動画を再生して、音が出ることを確認します。
最後に今回接続したデバイスを信頼します。
[Bose Mini II SoundLink]# trust XX:XX:XX:XX:XX:XX [Bose Mini II SoundLink]# Changing XX:XX:XX:XX:XX:XX trust succeeded
※上記のドキュメントではconnectをする前にtrustすることになっています。