headless

2020年12月 6日 (日)

Headless_RaspberryPiでOpenMediaVault(NASサーバー)を動かす

2020/12/12
設定について追記した。

2020/12/6
初版

Headless RaspberryPi OMV

Headless RaspberryPi OMV

概要

Headless_RaspberryPiでOpenMediaVault(NASサーバー)を動かす。

インストール

sshでログインして以下の手順でインストールする:

sudo apt update sudo apt upgrade sudo rm -f /etc/systemd/network/99-default.link sudo reboot # ここで、いったんリブートする # 再度、loginする cd ~/Downloads wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash # 約30分ほど、かかるので、そのまま待つ(途中でrebootあり) # 最終的に以下のようなメッセージが表示される: # (数値的なものなどは、状況によって変化する) <省略> ID: start_loadcpufreq_service Function: service.running Name: loadcpufreq Result: True Comment: The service loadcpufreq is already running Started: 23:39:56.248555 Duration: 267.893 ms Changes: Summary for raspberry(ホスト名) ------------ Succeeded: 4 (changed=2) Failed: 0 ------------ Total states run: 4 Total run time: 18.845 s # この時点でインストールが完了してサーバーが起動している

OpenMediaVaultのログイン

上のインストールが終了すると、そのまま、サーバーが動いている状態になるので webブラウザーでサーバーのurlにアクセスする。
mDNS(Avahi)が動作しているので、raspberry.localでアクセスする。
(ホスト名raspberryを変更しているのであれば、変更した名前xxxx.localでアクセスする)

ログイン用GUIが表示されるので
以下のユーザー/パスワードを入力する(初期値):

admin openmediavault

パスワード付きの共有設定

1.新規ユーザーの登録
・「アクセス権の管理」内の[ユーザー]をクリック、[追加]をクリックする。
・「名前」(任意の名前、たとえばOMV)を設定し、任意のパスワードを入力して、[保存]をクリックする。
・「設定が変更されました」と表示されたら[適用]をクリックし、その後、[はい]をクリックする。

2.共有フォルダ
・「アクセス権の管理」内の[共有フォルダ]をクリック、[追加]をクリックする。
・「名前」(任意の共有名)を設定し、「デバイス」を選択、「パーミッション」を「みんな:読み書き」に選択して[保存]をクリックする。
・「設定が変更されました」と表示されたら[適用]をクリックし、その後、[はい]をクリックする。

3.SMB/CIFS
・「サービス」から[SMB/CIFS]をクリック、[共有]タブを選択して[作成]をクリックする。
・「共有フォルダ」を選択、「パブリック」を[いいえ]にして[保存]をクリックします。
・「設定が変更されました」と表示されたら[適用]をクリックし、その後、[はい]をクリックする。

パスワード無し(guest)の共有設定

1.共有フォルダ
・「アクセス権の管理」内の[共有フォルダ]をクリック、[追加]をクリックする。
・「名前」(任意の名前)を設定し、「デバイス」を選択、「パーミッション」を「みんな:読み書き」に選択して[保存]をクリックする。
・「設定が変更されました」と表示されたら[適用]をクリックし、その後、[はい]をクリックする。
2.SMB/CIFS
・「サービス」から[SMB/CIFS]をクリック、[共有]タブを選択して[作成]をクリックする。
・「共有フォルダ」を選択、「パブリック」を[ゲストのみ]にして[保存]をクリックします。
・「設定が変更されました」と表示されたら[適用]をクリックし、その後、[はい]をクリックする。

この設定は、guestのみの設定になるので 他のPCから接続する場合、ユーザー/パスワードなしで接続できる。

サービスのリセット

設定を変更した場合、[システム/一般設定]のところにある[リセット]ボタンを押したほうが良いようだ。

接続方法

・ubutuの場合
(1)「ファイル/他の場所」をクリックするとサーバーのホスト名が以下のような形で見える:
<サーバーのホスト名> - SMB/CIFS (SMB/CIFSの場青)
<サーバーのホスト名> - SSH (SSHの場青)

(2)「<サーバーのホスト名> - SMB/CIFS」をクリックすると共有名が見えるので、それをクリックすると 接続する。
パスワード付きに設定している共有名は登録したユーザー名(OMVなど)とパスワードを入力すると接続できる。

.windowsの場合
(1)エクスプローラーのurl入力で、¥¥<サーバーのホスト名>を入力する。
(2)共有名が表示されるので、それをクリックする。
パスワード付きに設定している共有名は登録したユーザー名(OMVなど)とパスワードを入力す ると 接続できる。

トラブルシュート

OpenMediaVaultに直接関係ないが (1)volumioにNASとしてマウントしてエラーになり削除できない volumioにログインして削除できない共有名を以下の手順で削除する: (xxxは共有名とする) /mnt/NAS/xxx sudo umount /mnt/NAS/xxx sudo rm -r /mnt/NAS/xxx この後、volumioのGUIの設定にはいりNASの共有名xxxを削除する

参考url

https://www.openmediavault.org/
openmediavault 5.x documentation
Adden-B-Installing_OMV5_on_an%20R-PI.pdf

headless RaspberryPiインストール方法(v2)

ラズパイ4とOMV5(openmediavault5)で作る自宅NASサーバーの設定方法
openmediavault かんたんに共有する方法
OpenMediaVaultの設定

USBストレージ関係:
Raspberry Pi: Mount USB Drive – Automatically

以上

続きを読む "Headless_RaspberryPiでOpenMediaVault(NASサーバー)を動かす"

| | コメント (0)

2020年11月23日 (月)

Headless_RaspberryPiでSambaサーバーを動かす

2020/11/23+
初版

Headless RaspberryPi Samba server

Headless RaspberryPi Samba server

概要

Headless_RaspberryPiでSambaサーバーを動かす。

インストール

sshでログインして以下の手順でインストールする:

sudo apt install samba

設定

/etc/samba/smb.conf を以下のように編集する:

# オリジナルをバックアップする sudo cp -p /etc/samba/smb.conf /etc/samba/smb.conf.org sudo nano /etc/samba/smb.conf

以下を[global]に以下を追加する:

[global] netbios name = rpizWH1

rpizWH1 は、実際に自分の環境に合わせて 変更する。
(windowsでアクセスするためのホスト名になる)

以下を末尾に追加する:

[Public] comment = RaspberryPi Zero path = /mnt/usb/Public guest ok = yes read only = no browsable = yes force user = pi [MUSICz] path = /mnt/usb/MUSICz guest ok = yes read only = no browsable = yes force user = pi [Photos] path = /mnt/usb/Photos guest ok = yes read only = no browsable = yes force user = pi

path は、共有したいディレクトリになる。
[xxxx] は、xxxxは共有名になる。
該当のディレクトリ名に合わせると分かりやすいと思う。

起動

以上の設定が完了したら 以下の手順で必要なデーモンを起動する:

sudo service smbd restart #「NetBIOS over TCP/IP」用デーモンを起動する # (windowsで使用しないなら不要) sudo service nmbd restart

動作確認

外部から共有名が見えることを以下の手順で確認する:
(外部のPCから)

sudo apt smbclient smbclient -L rpizWH1.local Enter WORKGROUP\xxxxx's password: ([改行]のみで良い) Sharename Type Comment --------- ---- ------- print$ Disk Printer Drivers Public Disk RaspberryPi Zero MUSICz Disk Photos Disk IPC$ IPC IPC Service (Samba 4.9.5-Debian) SMB1 disabled -- no workgroup available

外部からアクセス

・windowsからのアクセス
ネットワークから「¥¥ホスト名」(上の例で言うと¥¥rpizWH1)で アクセスすると上で定義した共有名が表示される。共有名をクリックすることで接続できる。

・ubuntuからのアクセス
[ファイル]の「+他の場所」をクリックして ネットワーク状況を表示すると sambaサーバーのホスト名(上の設定では「RPIZWH1」)が 表示される。 そのホスト名をクリックすると共有名が表示される。
共有名をクリックすると匿名ユーザーとして 「パスワードが必要です」と表示されるが、 そのまま、パスワード無しで[接続する(N)]をクリックすると 接続できる。

・mountしてアクセスする
以下の手順のマウントして使用する:
例:

# 必要なライブラリをインストールする sudo apt install cifs-utils # サーバーのIPアドレスを確認する ping rpizWH1.local PING rpizWH1.local (192.168.0.27) 56(84) バイトのデータ 64 バイト応答 送信元 192.168.0.27: icmp_seq=1 ttl=64 時間=8.65ミリ秒 64 バイト応答 送信元 192.168.0.27: icmp_seq=2 ttl=64 時間=18.2ミリ秒 64 バイト応答 送信元 192.168.0.27: icmp_seq=3 ttl=64 時間=8.86ミリ秒 ^C # 共有名MUSICzをマウントする sudo mount -t cifs //192.168.0.27/MUSICz ~/mnt/cifs/MUSICz # パスワードを聞かれるが、そのまま改行するとマウントできる。

参考URL

headless RaspberryPiインストール方法(v2)

USBストレージ関係:
Raspberry Pi: Mount USB Drive – Automatically

以上

続きを読む "Headless_RaspberryPiでSambaサーバーを動かす"

| | コメント (0)

2020年11月14日 (土)

Headless_RaspberryPiでPirateAudioを使用する

2020/11/18
USBストレージで日本語ディレクトリが 文字化けするのを修正するために mountのオプションを変更した。

2020/11/14
初版

Headless RaspberryPi PirateAudio

Headless RaspberryPi PirateAudio

概要

Headless_RaspberryPiで以下のPirateAudioを使用する。
これはMiniHat形式のサウンドボードで、headlessの音楽プレーヤーとしては、 Mopidyを使用しており、webブラウザーで Mopidyのhttpサーバーにアクセスすることで操作画面を実現している。
PCが起動していない場合は、スマフォのアプリ「Mopidy Mobile」で、PCのwebブラウザーと同様のことを実現しているので それを利用するとPC不要でスマフォがリモコンになって家電感覚で使用できる。

Pirate Audio: Headphone Amp for Raspberry Pi

Mopidyのインストール方法

MiniHatのボードをRaspberryPiZeroに取り付けたら起動したら sshでログインして以下の手順でインストールする:

git clone https://github.com/pimoroni/pirate-audio cd pirate-audio/mopidy sudo ./install.sh sudo reboot

再ブートしてsshでログインするとサウンドボードとして使用可能な状態に鳴る。

音楽用ストレージの接続

音楽ファイルはUSBストレージに置くことにして RaspberryPiZeroに(OTGケーブル経由で) 該当USBストレージを接続する。

再起動してもUSBストレージが自動的にマウントするように設定する。 そのために以下の手順を実行する:

# USBストレージを接続しておく # マウント・ポイントを作る。 sudo mkdir /mnt/usb # USBストレージのUUIDを確認する sudo blkid # 出力例 /dev/mmcblk0p1: LABEL_FATBOOT="boot" LABEL="boot" UUID="6284-658D" TYPE="vfat" PARTUUID="d53ecfcc-01" /dev/mmcblk0p2: LABEL="rootfs" UUID="3a324232-335f-4617-84c3-d4889840dc93" TYPE="ext4" PARTUUID="d53ecfcc-02" /dev/sda1: UUID="6208-164A" TYPE="vfat" PARTUUID="c3072e18-01" /dev/mmcblk0: PTUUID="d53ecfcc" PTTYPE="dos" # /dev/sda1のUUIDを確認し、それがUSBストレージのUUIDになる # /etc/fstabのバックアップをとる $ sudo cp /etc/fstab /etc/fstab.back # fstabにUSBストレージのUUIDを登録する sudo nano /etc/fstab

以下の内容になるように編集する:

proc /proc proc defaults 0 0 PARTUUID=d53ecfcc-01 /boot vfat defaults 0 2 PARTUUID=d53ecfcc-02 / ext4 defaults,noatime 0 1 UUID=6208-164A /mnt/usb vfat defaults,auto,users,rw,nofail,utf8,umask=000 0 0 # a swapfile is not a swap partition, no line here # use dphys-swapfile swap[on|off] for that

「UUID=6208-164A」のところは、自分のUSBストレージのUUIDに置き換える。
編集し終わったら再ブート(「sudo reboot」)して、sshでログインする。
以下のコマンドで自動的にマウントしていることを確認する:

ls /mnt/usb/MUSICs

ここでは、MUSICsというディレクトリがある前提だが 実際には、自分のUSBストレージのディレクトリにする。

/etc/mopidy/mopidy.confに
音楽ディレクトリを設定するために以下を実行する:

sudo nano /etc/mopidy/mopidy.conf

以下の部分を変更する:

[file] enabled = true media_dirs = /home/pi/Music 以下のように変更する: [file] enabled = true #media_dirs = /home/pi/Music media_dirs = /mnt/usb/MUSICs

「/mnt/usb/MUSICs」の部分は、自分の環境に合わせる。

webブラウザーで以下にアクセスする:
http://raspberry.local:6680/

# raspberryの部分は自分の設定したhostnameにする

表示されている画面から[iris]をクリックして画面を切り替えて Settingsの[Start local scan]をクリックする。

.confで指定したディレクトリ(/mnt/usb/MUSICs)をスキャンするので スキャン後、Browseをクリックするとディレクトリやファイルが選択できるので それを使って曲を選択する。

使い勝手は、スマフォのアプリ「Mopidy Mobile」のほうが良いので、こちらを使用することを勧める。 通常のアプリと異なり[Tracklist]に再生した曲をプールしてから再生する仕様になっているので注意のこと。(Playlistを使うときも、いったんTracklistにコピーしてから再生する)

InternetRadioを使う

インターネットラジオは、インターネットラジオのurlを登録したplaylistを作成し、それを再生時に指定する形になる。

以下、実際の登録の手順:

cd /var/lib/mopidy/m3u sudo nano radio.m3u8

以下の内容に編集する:

#EXTM3U #EXTINF:0,BBC World Service English http://bbcwssc.ic.llnwd.net/stream/bbcwssc_mp1_ws-einws #EXTM3U #EXTINF:0,smoothjazz radio http://us3.internet-radio.com:8485/ #EXTM3U #EXTINF:0,Smooth Jazz Florida http://us4.internet-radio.com:8266/ #EXTM3U #EXTINF:0,Piano Letter http://222.122.178.186:1882/ #EXTM3U #EXTINF:0,DI Radio Digital Impulse - Blues http://5.39.71.159:8990/ #EXTM3U #EXTINF:0,MEGATON CAFE RADIO http://us2.internet-radio.com:8443/ #EXTM3U #EXTINF:0,Music Lake - Relaxation Music, Meditation, Focus, Chill, Nature Sounds http://104.251.118.50:8626/ #EXTM3U #EXTINF:0,RADIO ESTILO LEBLON (Easy listening) http://us4.internet-radio.com:8197/ #EXTM3U #EXTINF:0,Celtic Moon http://51.161.115.200:8096/ #EXTM3U #EXTINF:0,Asia DREAM Radio - Japan Hits http://184.75.212.82:1025/

1局が以下のような3行で表されている:

#EXTM3U #EXTINF:0,ラジオ局名 ラジオ局のURL

ラジオ局のURLの調べ方は以下を参照のこと:
headless_RaspberryPiをシンプルなinternet_radioにする

TuneInを聞く

サーバー側で以下の手順を実行する:

sudo python3 -m pip install Mopidy-TuneIn sudo reboot

再ブート後、サーバーに接続後、クライアントのBrowseやLibraryのところにTuneInのディレクトリができて、そこで再生したい放送局を選べる。

その他

他の音楽アプリでPirateAudioのDACを使う場合、(そのままだとリソースが競合してエラーになり動作しないので、いったん)sudo rebootする。

または、以下を実行してmopidyを止める:

sudo systemctl stop mopidy

参考URL

PirateAudio関係:
https://learn.pimoroni.com/tutorial/sandyj/getting-started-with-pirate-audio
https://shop.pimoroni.com/products/pirate-audio-headphone-amp
https://github.com/pimoroni/mopidy-pidi

USBストレージ関係:
Raspberry Pi: Mount USB Drive – Automatically

Mopidy関係:
Mopidy is an extensible music server written in Python.
Mopidy-Mobile

以上

続きを読む "Headless_RaspberryPiでPirateAudioを使用する"

| | コメント (0)

2020年11月 3日 (火)

Headless_RaspberryPiでAudio出力のデフォルトを変更する

2020/11/2+
初版

Headless RaspberryPi Audio Out Default

Headless RaspberryPi Audio Out Default

概要

Headless_RaspberryPiでAudio出力のデフォルトを変更する。
cliでのAudio出力のデフォルトを変更する方法を試行してきたが、どんなAudioデバイスに対しても汎用的に使える方法が見つからなかった。 そのためheadlessでもdesktopのvolumeアイコンをクリックして 出力先を変更することにしたので、その方法について述べる。

デフォルト変更方法

(1)desktopのvolumeアイコンをクリックする必要があるので VNCでログインする。

(2)ログイン後、RaspberryPiのデスクトップ画面の最上行のvolumeアイコンを右クリックして 出力先の選択メニューを表示させ、デフォルトにしたいデバイスを選択する。

選択メニューには以下のようなデバイスが表示されるので デフォルトにしたいデバイスを選択する:

Analog (フォンジャックを意味する) HDMI USB Audio Device (USB Audio Adaptorを接続している場合) Bluetooth Audioのデバイス名 (bluetoothで接続しいる場合) snd_rpi_hifiberry_dac (PirateAudioのMiniHatを刺している場合)

なお、bluetoothデバイスを選択した場合、アプリの設定が以下で述べるものと異なるので注意のこと。

bluetoothの場合は「RaspberryPiでBluetoothAudio(A2DP)を使用する」を参照のこと。

変更後の音の確認

以下の命令を実行してデフォルトにしたデバイスから音が出ていることを確認する:

aplay /usr/share/sounds/alsa/Front_Center.wav omxplayer -o alsa --vol -2000 http://us3.internet-radio.com:8485/ # vlcをインストールした場合、以下を実行する cvlc http://us3.internet-radio.com:8485/

各アプリの設定

以下のアプリでデフォルトにしたデバイスで音が出ない場合、 設定を確認して以下にする:

(1)vlc オーディオ設定: ALSA audio out オーディオデバイス: default (2)audacios Output plugin: ALSA output Setting: default (3)rthythmbox 出力先の設定なし、音は出ない (もともと使用不可?) (4)audacity Device/Interface Host: ALSA デバイス: default (5)webブラウザーからのyoutube 特に設定変更なしで音が出る

デフォルトの変更ならびに使用するアプリでのオーディオ出力を確認後は、VNCでログインする必要はなく、sshでログインできる。 そのときの音量調整は以下を実行して使用する:
(ただし、bluetoothを除く)

alsamixer

音を聞きながら調整したい場合は、もう一つのsshセッションを作り、 そのなかで、alsamixerを実行する。

参考URL

raspberrypi - Audio configuration
RaspberryPiでBluetoothAudio(A2DP)を使用する

ざっくりとALSAとPulseAudioの関係
UbuntuStudioTips/Setup/UbuntuSoundSystem

Pirate Audio: Headphone Amp for Raspberry Pi
USB Audio Adapter - Works with Raspberry Pi

以上

続きを読む "Headless_RaspberryPiでAudio出力のデフォルトを変更する"

| | コメント (0)

2020年10月31日 (土)

headless_RaspberryPiにTizoniaをインストールする

2020/11/3
YouTubeのplaylistの再生例を追加した。

2020/10/31+++
初版

headless RaspberryPi Tizonia

headless RaspberryPi Tizonia

概要

headless_RaspberryPiに以下のTizoniaをインストールする。
Tizoniaは音楽ストリーング再生アプリで、ここではアカウント情報を 登録しなくても使用できるYouTube音楽再生、TuneIn再生などを行なう。

Tizonia - Cloud music from the Linux terminal

インストール

インストールするRaspberryPiは、
「sudo raspi-config」でVNCを有効にしておくこと。
その後、sshでログインして、以下を手順を実行する;

cd ~/Downloads curl -kL https://github.com/tizonia/tizonia-openmax-il/raw/master/tools/install.sh | bash

RastberryPi向けのconfの修正

~/.config/tizona/tizonia.conf
以下のように修正する:

# - OMX.Aratelia.audio_renderer.pulseaudio.pcm # - OMX.Aratelia.audio_renderer.alsa.pcm default-audio-renderer = OMX.Aratelia.audio_renderer.alsa.pcm

長いファイルなので、コメントの「「OMX.Aratelia.audio_renderer」を手がかりに修正位置を探す。(audio_rendererをpulseaudioからalsaに修正する)

参照:
https://docs.tizonia.org/manual/raspberrypi.html
Raspberry Pi / CONFIGURATION

オーディオ出力先の変更

オーディオ出力は、フォンジャックやUSBオーディオなどの選択肢があるが 出力先はVNCでログインしてボリュームアイコンを右クリックし出力先を選択する。選択後、VNCはログアウトしてかまわない。(SSHの接続は継続する)

出力先として以下のような選択肢がある:

Analog # PhoneJack USB Audio Device snd_rpi_hifiberry_dac # Pirate Audio MiniHat

以下を実行して音が出れば出力先の切り替えができていることになる:

omxplayer -o alsa --vol -2000 --loop http://us3.internet-radio.com:8485/ cvlc http://us3.internet-radio.com:8485/

音量は、以下のアプリを起動して調整する。
音を効きながら調整したい場合、もう1つのsshセッションを立ち上げ、そのなかで以下のアプリを起動する。

alsamixer

シンプルな再生例

一番簡単な再生方法は以下のようにストリーミングのurlを与えるやり方である:

tizonia http://us4.internet-radio.com:8266/

ストリーミングのurlの調べ方は以下を参照のこと:
headless_RaspberryPiをシンプルなinternet_radioにする

TuneIn再生例

tizonia --tunein-search 'radio marca' --tunein-type "stations" --tunein-keywords "tenerife" tizonia --tunein-location "Europe" --tunein-keywords "Spain" --tunein-keywords "Madrid" tizonia --tunein-local "Cambridge" --tunein-type "stations" --tunein-keywords "BBC" tizonia --tunein-music 'rock' --tunein-keywords "181.FM" --tunein-keywords "US" --tunein-type "stations" tizonia --tunein-sports "news" --tunein-type "shows" tizonia --tunein-podcasts "Classical Music" --tunein-keywords "global" tizonia --tunein-music 'Classic' --tunein-keywords "181.FM" --tunein-keywords "US" --tunein-type "stations" tizonia --tunein-music 'Blues' --tunein-keywords "181.FM" --tunein-keywords "US" --tunein-type "stations" tizonia --tunein-music 'Jazz' --tunein-keywords "US" --tunein-type "stations"

TuneIn使用時のオプションの意味などは以下を参照のこと:
https://docs.tizonia.org/manual/tunein.html

YouTube再生(実行例)

$ tizonia --youtube-audio-stream https://youtu.be/FIwYFTKIG9E <省略> [YouTube] (GdataError) : Youtube Error 403: The request cannot be completed because you have exceeded your <a href="/youtube/v3/getting-started#quota">quota</a>. # 上のようなエラーが出ているが動作に支障ないようだ YouTube] [Audio stream] : 'https://youtu.be/FIwYFTKIG9E'. [YouTube] [Stream] [#1] '【千花音コラボ】フルートとクラリネットでバトルしました【千本桜x紅蓮華】'. [YouTube] [Streams in queue] '1'. [Youtube] [Streaming] : 'https://youtu.be/FIwYFTKIG9E'. 尾崎 勇太 : 【千花音コラボ】フルートとクラリネットでバトルしました【千本桜x紅蓮華】 (1 Description : 初めてのコラボです。今回はバトルなので ばちばちやっておりますが、次は協力プ� Published : 2020-04-18 09:00:08Z View Count : 136254 YouTube Id : https://youtu.be/FIwYFTKIG9E File Format : webm Bitrate : 160k Size : 3 MiB Duration : 03m:03s Opus Stream : 2 Ch, 48000 Hz 2 Ch, 48 KHz, 16:s:l 0% 10 20 30 40 50 60 70 80 90 100% 0s |----|----|----|----|----|----|----|----|----|----| 3m:03s

tizoniaに与えるurlは、YouTubeで再生している画面を右クリックして「動画のURLのコピー」でurlをコピーして、それをtizoniaに与える。(注意:「現時点の」が付いていない方を使う)

上の例では、urlに 「https://youtu.be/」 を付けているが以下のように省略しても再生できる。

tizonia --youtube-audio-stream FIwYFTKIG9E

YouTube使用時のオプションの意味などは以下を参照のこと:
https://docs.tizonia.org/manual/youtube.html

原因不明だが、ちゃんとwebブラウザーではyoutube再生できる(上のやり方で作った)urlでも、エラーに再生できないことがある。 また。1回目がエラーになるが、2回目以降は再生できることもある。

YouTubeのplaylist再生(実行例)

以下でplaylistを再生できる:

tizonia --youtube-audio-playlist RDMMHzruMUIwUh0

YouTubeの画面で上の方法でurlを取得した際、playlist上の動画を再生したときは以下の例のように「?list=」が含まれる。

https://youtu.be/t8vB1Xfj00E?list=RDMMHzruMUIwUh0

そのとき、「?list=」以降の文字列がplaylistの情報になるので、上の再生例のように、その部分を与えて、tizoniaを実行するとplaylistの内容が再生される。
playlistの曲の情報を収集するのに時間がかかる?ようなので、辛抱強く、待つと再生が開始する。
再生中は以下のキーが利用できる:

[SPACE] pause playback [p] skip to previous file [n] skip to next file [l] print list <number> [g] go to track/station <number> in playlist. [q] quit

以下は動作していないようだ:
[+/-] [Up/Down] increase/decrease volume.
[m] mute

参照:
Keyboard Shortcuts

iHeartRadio再生例

tizonia --iheart-search "top 40" tizonia --iheart-search "kiss" tizonia --iheart-search "ny" tizonia --iheart-search "albuquerque" tizonia --iheart-search "90s" tizonia --iheart-search "rock" --iheart-keywords 'The Rocket'

iHeartRadio使用時のオプションの意味などは以下を参照のこと:
https://docs.tizonia.org/manual/iheart.html

動作実績

Tizoniaのドキュメントによると全モデルで動作するとあるが、ここでは以下のモデルで動作確認した:

・Raspberry Pi 1 Model B ・Raspberry Pi 2 Model B ・Raspberry Pi 4 Model B ・Raspberry Pi Zero WH (+ USB-Audio or Audio-MiniHat)

参照URL

Tizonia documentation
headless_RaspberryPiをシンプルなinternet_radioにする

USB Audio Adapter - Works with Raspberry Pi
Pirate Audio: Headphone Amp for Raspberry Pi

headless RaspberryPiインストール方法(v2)

以上

続きを読む "headless_RaspberryPiにTizoniaをインストールする"

| | コメント (0)

2020年10月29日 (木)

RaspberryPiZeroにUSB-Audio-Adaptorを接続する

2020/10/30
他のアプリ再生時の設定を追加した。

2020/10/29
初版

RaspberryPiZero USB Audio

RaspberryPiZero USB Audio

概要

RaspberryPiZeroにUSB-Audio-Adaptorを接続する。
RaspberryPiZeroはフォンジャックを持っていないので OTG-USBケーブル経由でUSB-Audio-Adaptorを接続して音を鳴らす。

インストール手順

USB-Audio-Adaptorを接続する前に
以下の手順でハードウェア状況を確認する:

$ aplay -l **** List of PLAYBACK Hardware Devices **** card 0: b1 [bcm2835 HDMI 1], device 0: bcm2835 HDMI 1 [bcm2835 HDMI 1] Subdevices: 4/4 Subdevice #0: subdevice #0 Subdevice #1: subdevice #1 Subdevice #2: subdevice #2 Subdevice #3: subdevice #3 card 1: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones] Subdevices: 4/4 Subdevice #0: subdevice #0 Subdevice #1: subdevice #1 Subdevice #2: subdevice #2 Subdevice #3: subdevice #3

接続すると以下のようにUSBデバイスが追加されるのが確認できる:

$ aplay -l **** List of PLAYBACK Hardware Devices **** card 0: b1 [bcm2835 HDMI 1], device 0: bcm2835 HDMI 1 [bcm2835 HDMI 1] Subdevices: 4/4 Subdevice #0: subdevice #0 Subdevice #1: subdevice #1 Subdevice #2: subdevice #2 Subdevice #3: subdevice #3 card 1: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones] Subdevices: 4/4 Subdevice #0: subdevice #0 Subdevice #1: subdevice #1 Subdevice #2: subdevice #2 Subdevice #3: subdevice #3 card 2: Device [USB Audio Device], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0

以下の手順で現状のデバイスの優先順位を確認する:

$ cat /proc/asound/modules 0 snd_bcm2835 1 snd_bcm2835 2 snd_usb_audio

snd_bcm2835が0になっており、最優先になっていることが分かる。

これを変更するために
以下の内容の/etc/modprobe.d/alsa.base.confを作成する。

sudo nano /etc/modprobe.d/alsa.base.conf $ cat /etc/modprobe.d/alsa.base.conf options snd slots=snd_usb_audio,snd_bcm2835 options snd_usb_audio index=0 options snd_bcm2835 index=1

以下のコマンドでrebootする

sudo reboot

再度、ログインして 以下のように優先順位が変更になったことを確認する

$ cat /proc/asound/modules 0 snd_usb_audio 1 snd_bcm2835 2 snd_bcm2835

snd_usb_audioが最優先になったことが確認できる。
以下の手順でも優先順位を確認できる:

$ aplay -l **** List of PLAYBACK Hardware Devices **** card 0: Device [USB Audio Device], device 0: USB Audio [USB Audio] Subdevices: 0/1 Subdevice # 0: subdevice #0 card 1: b1 [bcm2835 HDMI 1], device 0: bcm2835 HDMI 1 [bcm2835 HDMI 1] Subdevices: 4/4 Subdevice #0: subdevice #0 Subdevice #1: subdevice #1 Subdevice #2: subdevice #2 Subdevice #3: subdevice #3 card 2: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones] Subdevices: 4/4 Subdevice #0: subdevice #0 Subdevice #1: subdevice #1 Subdevice #2: subdevice #2 Subdevice #3: subdevice #3

参考:
録音デバイスの優先順位は以下の手順で確認できる:

$ arecord -l **** List of CAPTURE Hardware Devices **** card 0: Device [USB Audio Device], device 0: USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0

再生確認

USB-Audio-Adaptorのフォンジャックにスピーカなどを接続して
以下の命令を実行する:

omxplayer -o alsa --vol -2000 --loop http://us3.internet-radio.com:8485/ # または以下を実行する # (再生しながらalsamixerで音量調節ができる) cvlc http://us3.internet-radio.com:8485/ & alsamixer

backgroundで動かしているcvlcを止めるときは 以下の手順で止める:

# VLCのPIDを調べる $ ps -a PID TTY TIME CMD 607 pts/0 00:00:33 vlc 626 pts/0 00:00:00 ps # VLCのプロセスをkillする $ kill 607

参考:
・VNCでVLCなどを実行しているとき、スピーカ・アイコンで音量調節ができる。

他のアプリ再生のための設定

GUIアプリなのでVNCでログインして設定する:

Audacious

以下にように設定すると再生できる:

Output Settings ALSA Output/Settings PCM device: sysdefault:CARD=Device - USB Audio Device Default Audio Device Mixer device: hw:CARD=Device - USB Audio Device Direct control device

Rhythmbox

特に設定なし(ALSAのデフォルトで再生しているようだ)

Audacity

以下にように設定すると再生できる:

Edit/Preference Interface/Host: ALSA Playback Device: USB Audio Devide:-(hw:0,0) Recording Device: USB Audio Devide:-(hw:0,0)

参照URL

RaspberryPiでUSBオーディオを使用する

headless_RaspberryPiをシンプルなinternet_radioにする
omxplayerの使い方については上を参照のこと。
ただし、出力先は「local」ではなく「alsa」にする。

headless RaspberryPiインストール方法(v2)

以上

続きを読む "RaspberryPiZeroにUSB-Audio-Adaptorを接続する"

| | コメント (0)

2020年10月23日 (金)

headless_RaspberryPiにBluetooth機器を接続する

2020/10/23
初版

headless RaspberryPi bluetooth

headless RaspberryPi bluetooth

概要

headless_RaspberryPiにBluetooth機器を接続する
なお、ホストPCとしては、ubuntu20.04を想定している。

入力デバイス(キーボードなど)

以下のような手順で接続する:

$ bluetoothctl Agent registered [bluetooth]# agent on Agent is already registered [bluetooth]# scan on Discovery started [CHG] Controller DC:A6:32:71:B9:38 Discovering: yes [CHG] Device 5B:28:98:BF:1D:C7 RSSI: -61 [CHG] Device 5B:28:98:BF:1D:C7 TxPower: 12 [CHG] Device 0E:CF:6C:B5:FC:58 RSSI: -61 [CHG] Device 0E:CF:6C:B5:FC:58 RSSI: -73 [bluetooth]# scan on Failed to start discovery: org.bluez.Error.InProgress # 上の行は、検索中に「scan on」したのでエラーが表示されている [CHG] Device 0E:CF:6C:B5:FC:58 RSSI: -62 # 以下の行で、bluetoothのキーボードが見つかる [NEW] Device 98:92:01:30:42:48 Bluetooth Keyboard [NEW] Device 00:1B:DC:FB:37:61 T530 #1 [CHG] Device 08:3E:8E:E2:05:9F RSSI: -67 [CHG] Device 08:3E:8E:E2:05:9F TxPower: 0 [bluetooth]# scan off Discovery stopped # bluetooth keyboardのアドレスでペアリングする [bluetooth]# pair 98:92:01:30:42:48 Attempting to pair with 98:92:01:30:42:48 [CHG] Device 98:92:01:30:42:48 Connected: yes # 以下の番号を該当のキーボードに入力してEnterする [agent] PIN code: 742095 [CHG] Device 98:92:01:30:42:48 Modalias: usb:v05ACp022Cd011B [CHG] Device 98:92:01:30:42:48 UUIDs: 00001124-0000-1000-8000-00805f9b34fb [CHG] Device 98:92:01:30:42:48 UUIDs: 00001200-0000-1000-8000-00805f9b34fb [CHG] Device 98:92:01:30:42:48 ServicesResolved: yes [CHG] Device 98:92:01:30:42:48 Paired: yes Pairing successful [CHG] Device 98:92:01:30:42:48 ServicesResolved: no [CHG] Device 98:92:01:30:42:48 Connected: no # 上と同様のアドレス(ペアリングしたデバイス)を入力してconnetする [bluetooth]# connect 98:92:01:30:42:48 Attempting to connect to 98:92:01:30:42:48 [CHG] Device 98:92:01:30:42:48 Connected: yes Connection successful [CHG] Device 98:92:01:30:42:48 ServicesResolved: yes [Bluetooth Keyboard]# quit

以上で該当のキーボードが接続できるが sshでログインしている場合、 ssh画面上はキーボードの入力確認ができないので VNCで接続して、そのなかの端末などで 入力の確認ができる。

ローレベルの話をすると以下のようなコマンドで 入力デバイスの状態を取得できる:

cat /dev/input/event0 | od -t x1 # または cat /dev/input/event1 | od -t x1

イヤフォン

以下の手順で必要なものをインストールする:

sudo apt-get install pulseaudio pulseaudio-module-bluetooth sudo usermod -G bluetooth -a pi pax11publish -r; /usr/bin/pulseaudio --start sudo apt install mpg123

以下のような手順で接続する:

$ bluetoothctl Agent registered [Bluetooth Keyboard]# scan on Discovery started [CHG] Controller DC:A6:32:71:B9:38 Discovering: yes [NEW] Device 7E:5E:40:FB:03:8C 7E-5E-40-FB-03-8C [NEW] Device 11:40:6D:7A:94:B9 11-40-6D-7A-94-B9 [NEW] Device 00:1B:DC:FB:37:61 T530 #1 [NEW] Device 08:3E:8E:E2:05:9F T530 # 以下の行で、該当のイヤフォンが見つかる [NEW] Device 00:00:00:00:06:5A VTH-IC031 # 該当のイヤフォンのアドレスでペアリングする [Bluetooth Keyboard]# pair 00:00:00:00:06:5A Attempting to pair with 00:00:00:00:06:5A [CHG] Device 00:00:00:00:06:5A Connected: yes [CHG] Device 00:00:00:00:06:5A Modalias: bluetooth:v005Dp223Bd0100 [CHG] Device 00:00:00:00:06:5A UUIDs: 00001101-0000-1000-8000-00805f9b34fb [CHG] Device 00:00:00:00:06:5A UUIDs: 00001108-0000-1000-8000-00805f9b34fb [CHG] Device 00:00:00:00:06:5A UUIDs: 0000110b-0000-1000-8000-00805f9b34fb [CHG] Device 00:00:00:00:06:5A UUIDs: 0000110c-0000-1000-8000-00805f9b34fb [CHG] Device 00:00:00:00:06:5A UUIDs: 0000110e-0000-1000-8000-00805f9b34fb [CHG] Device 00:00:00:00:06:5A UUIDs: 0000111e-0000-1000-8000-00805f9b34fb [CHG] Device 00:00:00:00:06:5A UUIDs: 00001200-0000-1000-8000-00805f9b34fb [CHG] Device 00:00:00:00:06:5A ServicesResolved: yes [CHG] Device 00:00:00:00:06:5A Paired: yes Pairing successful [CHG] Device 00:00:00:00:06:5A ServicesResolved: no      [CHG] Device 00:00:00:00:06:5A Connected: no [CHG] Device 7E:5E:40:FB:03:8C RSSI: -66 # 上と同様のアドレス(ペアリングしたデバイス)を入力してconnetする [Bluetooth Keyboard]# connect 00:00:00:00:06:5A Attempting to connect to 00:00:00:00:06:5A [CHG] Device 00:00:00:00:06:5A Connected: yes Connection successful [CHG] Device 00:00:00:00:06:5A ServicesResolved: yes [VTH-IC031]# quit

以上でイヤフォン[VTH-IC031]がbluetooth接続できた。

以下、動作確認:

wget http://www.ne.jp/asahi/music/myuu/wave/strings.wav aplay strings.wav wget http://www.ne.jp/asahi/music/myuu/wave/musicbox.wav aplay musicbox.wav wget http://www.ne.jp/asahi/music/myuu/wave/ifudoudou.mp3 mpg123 ifudoudou.mp3 # または cvlc ifudoudou.mp3

参考URL

Raspberry PiにBluetooth機器をCLIで接続する  
Bluetooth on the Raspberry Pi
Linux のコマンドラインで Bluetooth 接続

actuino/bt_speaker-raspberry_pi-zero_w.md
How to Play MP3 Files from Command Line 
Linuxを利用して簡単にコマンドMP3再生

/dev/inputについて
Exploring /dev/input

以上

続きを読む "headless_RaspberryPiにBluetooth機器を接続する"

| | コメント (0)

2020年2月18日 (火)

BareMetalのMicropythonをRaspberryPi_Zeroにインストールしてみる

2020/2/18++++

BareMetal RpiZero MicroPython Install

BareMetal RpiZero MicroPython Install

概要

まだWiFiがサポートされていないようだがBareMetalのMicropythonをRaspberryPi_Zeroにインストールする方法について記載する。 以下、RaspberryPi_ZeroをRpiZeroとする。 (ホストPCとしてはubuntuを想定している)

事前準備

(1)ampyのインストール
AMPY_PORTは、自分の環境に合わせる。

pip install adafruit-ampy export AMPY_PORT=/dev/ttyUSB0 export AMPY_BAUD=115200

(2)picocomのインストール

sudo apt-get install picocom

以上のうち、exportしているものは、.bashrcに登録することを勧める。

ビルド手順

以下の手順でビルドする:

git clone https://github.com/boochow/micropython-raspberrypi.git cd micropython-raspberrypi git submodule update --init cd micropython; git submodule update --init; cd .. cd raspberrypi make BOARD=RPI1 # Raspberry Pi2の場合、以下にする: #make BOARD=RPI2 # 以上で次のイメージが作成される build/firmware.img

ビルドしたファームウェアの書き込み

参照した手順ではブートできなかったので、実際にブートできたやり方を以下に記する:
(1)本家サイトで記載されたやりかたでブートSDを作成する。
headless RaspberryPiインストール方法を参照のこと。
(2)そのsdにはbootとrootfsのパーティションが作成されるが bootに上でビルドしたfirmware.imgをコピーする。
(3)bootにあるconfig.txtを編集して以下の1行を末尾に追加する。
kernel=firmware.img

参考情報:
ネット情報によれば/boot のカーネルイメージには、以下がある:
(1)kernel.img
初代Raspberry Pi/RpiZeo用でarmv6になる
(2)kernel7.img
Raspberry Pi2用/Pi3用/Pi4?用でarmv7になる。

今回のブートは、kernel.imgの代わりに firmware.imgを起動することになる。

BareMetal MicroPythonの起動

(1)シリアルをコンソールにするので、 以下のようにRpiZeroとUSBシリアルアダプターを接続する。

RpiZero USB_serial(AE-TTL-232R)
p2(5V) NC
p4(5V) NC
p6(GND) GND
p8(TXD) RXD
p10( RXD) TXD

NC:None Connection

接続は以下の写真が分かりやすい:
https://blog.boochow.com/wp-content/uploads/rpi-zero-serial.jpg

(2)USBシリアルをホストPCに接続する。(デバイス名を/dev/ttyUSB0とする)
(3)「picocom /dev/ttyUSB0 -b115200」でUSBシリアルを起動しておく。
(4)RpiZeroに上で作成したSDを刺し電源を入れる。(MicroPythonが起動する)
(5)起動しておいたUSBシリアルにMicroPythonのメッセージが出力される。

BareMetal MicroPython ログ出力例

picocomを使いボードとシリアルで通信する。 以下、通信例:

PYB: soft reboot mounting SD card...done MicroPython 0fb6bf7 on 2020-02-18; Raspberry Pi with ARM1176JZF-S Type "help()" for more information. >>> import gc >>> gc.collect() >>> gc.mem_free() 65567440 # 他のボードよりもRAMが大きいので、大きな数字になっている。 >>> >>> >>> import os >>> os.listdir() ['overlays', 'bcm2708-rpi-b-plus.dtb', 'COPYING.linux', 'LICENCE.broadcom', 'bcm2708-rpi-zero-w.dtb', 'bcm2708-rpi-b.dtb', 'bcm2708-rpi-cm.dtb', 'issue.txt', 'bcm2708-rpi-zero.dtb', 'bcm2709-rpi-2-b.dtb', 'bcm2710-rpi-2-b.dtb', 'bcm2710-rpi-3-b-plus.dtb', 'bcm2710-rpi-3-b.dtb', 'bcm2710-rpi-cm3.dtb', 'bcm2711-rpi-4-b.dtb', 'bootcode.bin', 'cmdline.txt', 'config.txt', 'fixup.dat', 'fixup4.dat', 'fixup4cd.dat', 'fixup4db.dat', 'fixup4x.dat', 'fixup_cd.dat', 'fixup_db.dat', 'fixup_x.dat', 'kernel.img', 'kernel7.img', 'kernel7l.img', 'kernel8.img', 'start.elf', 'start4.elf', 'start4cd.elf', 'start4db.elf', 'start4x.elf', 'start_cd.elf', 'start_db.elf', 'start_x.elf'] # 通常のブートsdのbootが見えているので、必要ないファイルが見えている。 >>> import sys >>> sys.path ['', '/sd/lib', '/sd'] # パスはSD向けに設定されている >>> >>> import os >>> os.uname() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: no such attribute # エラーになるようだ >>> >>> list(5 * x + y for x in range(10) for y in [4, 2, 1]) [4, 2, 1, 9, 7, 6, 14, 12, 11, 19, 17, 16, 24, 22, 21, 29, 27, 26, 34, 32, 31, 39, 37, 36, 44, 42, 41, 49, 47, 46] >>> >>> help('modules') __main__ hashlib struct ujson array io sys uos binascii json time urandom builtins machine ubinascii ure cmath math ucollections ustruct collections mcu uctypes utime errno micropython uerrno utimeq framebuf os uhashlib uzlib gc random uheapq zlib gpu re uio Plus any modules on the filesystem >>>

ampy実行例

以下のようにampyも動作するようだ:

$ ampy ls /sd ~$ ampy ls /sd /sd/COPYING.linux ... 省略 ... /sd/kernel.img

動作したスクリプト

LEDonBoard_blink.py

import utime from machine import Pin # set gpio47 to output mode led=Pin(47,Pin.OUT) # LED on board while(1): led(0) # LED on utime.sleep_ms(300) led(1) # LED off utime.sleep_ms(300)

ボード上のLEDが点滅する。

performaceTestRpiZero.py

# Peformace Test RpiZero import time def performanceTest(): msec = time.ticks_ms endTime = msec() + 10000 count = 0 while msec() < endTime: count += 1 print("Count: ", count) performanceTest()

以下が出力される。(数字は多少変化する)
Count: 680525

Nucleo-F446REの数字が、2825625くらいなので それに比べると随分遅い結果になる。
(CPUキャッシュが有効になっていないせいだと思われる)

https://github.com/micropython/micropython-unicorn/blob/master/www-emu/pyboard_demos.py からの抜粋:
mandel.py

# A python Mandelbrot set courtesy of # http://warp.povusers.org/MandScripts/python.html # Try your own Python3 scripts on MicroPython! minX = -2.0 maxX = 1.0 width = 60 height = 28 aspectRatio = 2 chars = ' .,-:;i+hHM$*#@ ' yScale = (maxX-minX)*(float(height)/width)*aspectRatio for y in range(height): line = '' for x in range(width): c = complex(minX+x*(maxX-minX)/width, y*yScale/height-yScale/2) z = c for char in chars: if abs(z) > 2: break z = z*z+c line += char print(line)

動作しなかったスクリプト(エラーが出る)

led_blink.py

import mcu, utime # set gpio47 to output mode mcu.mem32[mcu.GPFSEL4] = 2**21 while(1): mcu.mem32[mcu.GPCLR1] = 2**15 utime.sleep_ms(300) mcu.mem32[mcu.GPSET1] = 2**15 utime.sleep_ms(300)

mcu.mem32のところでエラーになる。

assembler.py

# inline assembler @micropython.asm_thumb def asm_add(r0, r1): add(r0, r0, r1) print(asm_add(1, 2))

inline-assemblerはサポートされていない?ようだ。

備考

ブートが安定しなくて、起動しないことが多い。原因は不明。一晩おいてから電源をいれるとブートしたりする。なにかしらリセット周りの問題?
→問題解決した。(2020/2/19)
「ブート問題解決(追記)」を参照のこと。

完成度が高まり、WiFiなどが使えるようになれば、機能的にはESP32の最上位機種的なものとして使える印象がある。

ブート問題解決(追記)

通常のブートSDをそのまま流用していたので、ブート時のMicroPythonのSDのマウントにおいて、rootfsのパーティションがあるので マウントに失敗してブートしないと推測する。(そうすると、成功率が低いにせよ、マウントできてブートが正常になる理由が分からないという話になるが。。。)
そこでrootfsがないSD(普通のフォーマットのSD)に以下のファイルのみをコピーして、それをブートSDとする。

config.txt, firmware.img, start.elf, bootcode.bin
補足:start.elf, bootcode.bin は、オリジナルの/bootに含まれたもの

このブートSDを使用することで確実にブートするようになった。
以下、ブート時のREPL出力:

mounting SD card...done MicroPython 0fb6bf7 on 2020-02-18; Raspberry Pi with ARM1176JZF-S Type "help()" for more information. >>> import os >>> os.listdir() ['config.txt', 'firmware.img', 'start.elf', 'bootcode.bin'] >>> import gc >>> gc.collect() >>> gc.mem_free() 65565504 >>> >>> import sys >>> sys.path ['', '/sd/lib', '/sd'] >>>

なお、同じブートSDで初代Raspberry-PiでもMicroPythonが起動した。

参照情報

MicroPython on bare metal Raspberry Pi Zero / Zero W / 2
PiZero pinout
AE-TTL-232R-PINSOCKET

Quick reference for the Raspberry Pi Zero W MicroPython

ベアメタルRaspberry Pi用MicroPythonが公開
ベアメタルRaspberry Pi用MicroPythonをv1.11ベースに

USB版
HDMIディスプレイとUSBキーボードが使えるUSB版:
試していないが以下で使用できるようだ。
(1)microSDカードへ展開
(2)main.pyを開き、コメントアウトを外し(’# ‘を削除)て保存
(3)HDMIディスプレイとUSBキーボード(US配列のみ)を接続して起動

以上

続きを読む "BareMetalのMicropythonをRaspberryPi_Zeroにインストールしてみる"

| | コメント (0)

2020年1月12日 (日)

Raspberry Pi Zero_WのMicropythonのインストール方法

2020/1/12

Raspberry Pi Zero_W Micropython Install

Raspberry Pi Zero_W Micropython Install

概要

Raspberry_Pi_Zero-WにMicropythonをインストールする方法について記載する。(他のRaspberry_Piでも同様の方法でインストールできるはず)

事前準備

以下をRaspberryPiにインストールする:
(fullのimageを使用しているのであれば(たぶん)不要)

sudo apt-get install git sudo apt-get install build-essential sudo apt-get install libffi-dev

参照URL

The MicroPython project
Installing MicroPython - How To Guide
raspberrypi/hats

インストール手順

mkdir mp cd mp git clone https://github.com/micropython/micropython.git cd micropython cd mpy-cross make 出力ログ: <省略> CC gccollect.c LINK mpy-cross text data bss dec hex filename 272484 396 436 273316 42ba4 mpy-cross pi@raspberrypi:~/mp/micropython/mpy-cross $ cd .. cd ports/unix make submodules make 出力ログ: <省略> CC ../../lib/timeutils/timeutils.c LINK micropython text data bss dec hex filename 302953 4508 1248 308709 4b5e5 micropython pi@raspberrypi:~/mp/micropython/ports/unix $

動作確認

(1)簡単な確認

pi@raspberrypi:~/mp/micropython/ports/unix $ ./micropython MicroPython v1.12-58-g7ef2f6511 on 2020-01-12; linux version Use Ctrl-D to exit, Ctrl-E for paste mode >>> list(5 * x + y for x in range(10) for y in [4, 2, 1]) [4, 2, 1, 9, 7, 6, 14, 12, 11, 19, 17, 16, 24, 22, 21, 29, 27, 26, 34, 32, 31, 39, 37, 36, 44, 42, 41, 49, 47, 46] >>>Ctrl-D

(2)本格的な確認

cd ~/mp/micropython/ cd tests ./run-tests 出力ログ: <省略> pass unix/time.py 733 tests performed (19641 individual testcases) 733 tests passed 49 tests skipped: builtin_help builtin_next_arg2 builtin_range_binop class_delattr_setattr io_buffered_writer memoryview_itemsize namedtuple_asdict sys_getsizeof cmd_parsetree repl_words_move framebuf1 framebuf16 framebuf2 framebuf4 framebuf8 framebuf_subclass ucryptolib_aes128_ctr urandom_extra urandom_extra_float ure_debug ure_groups ure_span ure_sub ure_sub_unmatched vfs_basic vfs_blockdev vfs_fat_fileio1 vfs_fat_fileio2 vfs_fat_finaliser vfs_fat_more vfs_fat_oldproto vfs_fat_ramdisk vfs_fat_ramdisklarge vfs_lfs vfs_lfs_corrupt vfs_lfs_error vfs_lfs_file vfs_lfs_mount vfs_userfs math_factorial_intbig module_getattr mpy_invalid mpy_native resource_stream schedule sys_settrace_features sys_settrace_generator sys_settrace_loop extra_coverage pi@raspberrypi:~/mp/micropython/tests $

Micropythonの最終インストール

sudo ln -s ~/mp/micropython/ports/unix/micropython /usr/local/bin/micropython

ここで、コマンドとして「micropython」が使用できるようになる。

micropython-socketライブラリーのインストール

micropython -m upip install micropython-socket 出力ログ: Installing to: /home/pi/.micropython/lib/ Warning: micropython.org SSL certificate is not validated Installing micropython-socket 0.5.2 from https://micropython.org/pi/socket/socket-0.5.2.tar.gz ライブラリーのインストール確認: $ micropython MicroPython v1.12-58-g7ef2f6511 on 2020-01-12; linux version Use Ctrl-D to exit, Ctrl-E for paste mode >>> import usocket >>> print(dir(usocket)) ['__class__', '__name__', 'AF_INET', 'AF_INET6', 'AF_UNIX', 'MSG_DONTROUTE', 'MSG_DONTWAIT', 'SOCK_DGRAM', 'SOCK_RAW', 'SOCK_STREAM', 'SOL_SOCKET', 'SO_BROADCAST', 'SO_ERROR', 'SO_KEEPALIVE', 'SO_LINGER', 'SO_REUSEADDR', 'getaddrinfo', 'inet_ntop', 'inet_pton', 'sockaddr', 'socket'] >>> import socket >>> print(dir(socket)) ['__class__', '__name__', '__file__', 'AF_INET', 'AF_INET6', 'AF_UNIX', 'MSG_DONTROUTE', 'MSG_DONTWAIT', 'SOCK_DGRAM', 'SOCK_RAW', 'SOCK_STREAM', 'SOL_SOCKET', 'SO_BROADCAST', 'SO_ERROR', 'SO_KEEPALIVE', 'SO_LINGER', 'SO_REUSEADDR', 'getaddrinfo', 'inet_ntop', 'inet_pton', 'sockaddr', 'socket', '_socket', '_GLOBAL_DEFAULT_TIMEOUT', 'IPPROTO_IP', 'IP_ADD_MEMBERSHIP', 'IP_DROP_MEMBERSHIP', 'INADDR_ANY', 'error', '_resolve_addr', 'inet_aton', 'create_connection'] >>> Ctrl-D

USB serial接続

Raspberry_Pi_Zero-WのUSBにOTGケーブルを接続して(USB serial可能な)Arduinoボードなどを接続すれば、Arduinoのセンサーなどの情報をシリアル経由で取り出せるので、そのデータをmicropythonで処理できる。この方法によって、特別なHATなどをRaspberry_Piに接続せずにセンサーデータを利用できる。(serial portは、/dev/ttyACM0などになる)

以上

続きを読む "Raspberry Pi Zero_WのMicropythonのインストール方法"

| | コメント (0)

2020年1月 9日 (木)

headless RaspberryPiインストール方法

2020/1/9+++

headless RaspberryPi

headless RaspberryPi

概要

表示装置を接続しないでPCを運用することをheadlessというが、ここでは、最初のbootからRaspberryPiをheadlessで使う方法についてまとめた。基本的には本家siteのドキュメントにあるとおりだが、それに必要なものを追加した。ここでは、 Raspberry_Pi_Zero-Wのボードを使う前提で説明してある。

事前準備(clientPC側(linux))

以下のdeamonをインストールする:

sudo apt-get update sudo apt-get install avahi-daemon

sshのポートを開くための設定:

sudo ufw allow ssh

参照URL

installation/installing-images/linux
configuration/wireless/headless
configuration/wireless/wireless-cli
remote-access/ssh/unix
How to open ssh port using ufw on Ubuntu/Debian Linux

Downloading raspbian image

以下から希望のimageをダウンロードする。
raspbian_full_latest
raspbian_latest
raspbian_lite_latest

Discovering the SD card mountpoint and unmounting it

imageに書き込むSDのデバイス名の確認し、アンマウントする。

lsblk -p <省略> ... /dev/mmcblk0 179:0 0 28.9G 0 disk └─/dev/mmcblk0p1 179:1 0 28.9G 0 part /media/user/18F0-D045

これで書き込むSDのデバイス名が/dev/mmcblk0と確認できた。 これをunmaunt(取り出す)する。(物理的には取り出さない)

Downloadしたimageを書き込む

実行例: (/dev/mmcblk0は自分の環境に合わせて変更する)

cd <downloadしたimageがあるディレクトリ> unzip -p 2019-09-26-raspbian-buster.zip | sudo dd of=/dev/mmcblk0 bs=4M conv=fsync または unzip -p 2019-09-26-raspbian-buster-lite.zip | sudo dd of=/dev/mmcblk0 bs=4M conv=fsync または unzip -p 2019-09-26-raspbian-buster-full.zip | sudo dd of=/dev/mmcblk0 bs=4M conv=fsync

出力ログ例:

$ unzip -p 2019-09-26-raspbian-buster.zip | sudo dd of=/dev/mmcblk0 bs=4M conv=fsync 0+40350 レコード入力 0+40350 レコード出力 3829399552 bytes (3.8 GB, 3.6 GiB) copied, 268.143 s, 14.3 MB/s または $ unzip -p 2019-09-26-raspbian-buster-full.zip | sudo dd of=/dev/mmcblk0 bs=4M conv=fsync [sudo] komatsu のパスワード: 0+62011 レコード入力 0+62011 レコード出力 6811549696 bytes (6.8 GB, 6.3 GiB) copied, 470.142 s, 14.5 MB/s または $ unzip -p 2019-09-26-raspbian-buster-lite.zip | sudo dd of=/dev/mmcblk0 bs=4M conv=fsync 0+26539 レコード入力 0+26539 レコード出力 2248146944 bytes (2.2 GB, 2.1 GiB) copied, 158.167 s, 14.2 MB/s

bootディレクトリのファイル追加

書き込んだSDをいったん取り外し、再度、挿入する。 すると、bootディレクトリが出現する。

(1)ssh有効化
bootにsshという名前のファイルを作成する。(ファイル内容は空で良い)

(2)wireless設定
bootにwpa_supplicant.confという名前で 以下の内容のファイルを作成する:

wpa_supplicant.conf
(複数のSSIDを設定する例)

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=JP network={ ssid="<Name of your WiFi>" psk="<Password for your WiFi>" priority=1 id_str="<ID1(任意)>" } network={ ssid="<Name of your WiFi>" psk="<Password for your WiFi>" priority=2 id_str="<ID2(任意)>" }

接続するssidの方式はWAPかWPA2であること
(WEPでは接続できないようだ)

(3)該当SDを取り出す boot,rootfsをアンマウントする。

Boot

書き込んだSDをRaspberryPiのボードに刺し、電源をオンする。(起動する)
ボードのLEDが点滅し始めて、常灯するまで待つ。

Login

ホストPCで接続を確認するために
(名前解決に時間がかかるので)
以下のコマンドを成功するまで繰り返す。
ping raspberrypi.local

出力ログ例:

$ ping raspberrypi.local PING raspberrypi.local (192.168.0.26) 56(84) bytes of data. 64 bytes from 192.168.0.26: icmp_seq=1 ttl=64 time=39.4 ms 64 bytes from 192.168.0.26: icmp_seq=2 ttl=64 time=78.2 ms 64 bytes from 192.168.0.26: icmp_seq=3 ttl=64 time=10.0 ms 64 bytes from 192.168.0.26: icmp_seq=4 ttl=64 time=9.81 ms 64 bytes from 192.168.0.26: icmp_seq=5 ttl=64 time=18.9 ms ^C --- raspberrypi.local ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4005ms rtt min/avg/max/mdev = 9.816/31.306/78.254/25.833 ms

どうしても接続確認ができないようなら「arp -a」を入力して、接続中のPCのIPアドレスを表示させて、RaspberryPiのIPアドレスを推定する。

接続確認が終わったら以下のコマンドを入力してloginする:
(デフォルトのパスワードはraspberry)

ssh pi@raspberrypi.local または ssh -Y pi@raspberrypi.local (接続後にグラフィクス・アプリを使用する場合)

ログイン初期接続のログ出力例:

ssh pi@raspberrypi.local The authenticity of host 'raspberrypi.local (192.168.0.26)' can't be established. ECDSA key fingerprint is SHA256:v3pvQPmIvpInAIIOkzFU6FMqri9k4oTWiFI0LNiJHgw. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'raspberrypi.local,192.168.0.26' (ECDSA) to the list of known hosts. pi@raspberrypi.local's password: Linux raspberrypi 4.19.75+ #1270 Tue Sep 24 18:38:54 BST 2019 armv6l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Thu Sep 26 01:32:10 2019 SSH is enabled and the default password for the 'pi' user has not been changed. This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.

login後

ログイン中(ログ出力例):

pi@raspberrypi:~ $ uname -a Linux raspberrypi 4.19.75+ #1270 Tue Sep 24 18:38:54 BST 2019 armv6l GNU/Linux pi@raspberrypi:~ $ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 29458568 3118176 25092456 12% / devtmpfs 217208 0 217208 0% /dev tmpfs 221536 0 221536 0% /dev/shm tmpfs 221536 3188 218348 2% /run tmpfs 5120 4 5116 1% /run/lock tmpfs 221536 0 221536 0% /sys/fs/cgroup /dev/mmcblk0p1 258095 53034 205061 21% /boot tmpfs 44304 0 44304 0% /run/user/1000 pi@raspberrypi:~ $ ls Desktop Downloads Music Public Videos Documents MagPi Pictures Templates pi@raspberrypi:~ $ ifconfig lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.26 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 fe80::aab:d0bc:bf6e:3058 prefixlen 64 scopeid 0x20<link> ether b8:27:eb:bc:01:7c txqueuelen 1000 (Ethernet) RX packets 12575 bytes 14102468 (13.4 MiB) RX errors 0 dropped 2 overruns 0 frame 0 TX packets 4932 bytes 508646 (496.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 pi@raspberrypi:~ $ sudo apt-get update Get:1 http://archive.raspberrypi.org/debian buster InRelease [25.2 kB] Get:2 http://raspbian.raspberrypi.org/raspbian buster InRelease [15.0 kB] Get:3 http://raspbian.raspberrypi.org/raspbian buster/main armhf Packages [13.0 MB] Get:4 http://archive.raspberrypi.org/debian buster/main armhf Packages [260 kB] Fetched 13.3 MB in 2min 4s (107 kB/s) Reading package lists... Done

hostname変更

必要があれば、hostnameを変更するために
以下の2つのファイルに記述されているhostnameを新しいものにエディタで変更(編集)し
再起動する:
(boot前にSDのrootfsのものを変更しても良い)

sudo nano /etc/hostname sudo nano /etc/hosts sudo reboot

グラフィクス・アプリ起動例

ssh -Y pi@raspberrypi.local geany & sudo apt-get install scratch scratch & sudo apt-get install leafpad leafpad &

chromeのインストール

sudo apt-get install chromium-browser chromium-browser &

node.jsとrubyのインストール

sudo apt-get install nodejs sudo apt-get install ruby

C#のインストール

sudo apt-get install mono-complete mcs --version Mono C# compiler version 5.18.0.240 csharp Mono C# Shell, type "help;" for help Enter statements below. csharp> Environment.OSVersion Unix 4.19.75.0 csharp> Ctrl-D

WiringPiのインストール例

git clone https://github.com/WiringPi/WiringPi cd WiringPi ./build cd ~ gpio -v gpio version: 2.60 Copyright (c) 2012-2018 Gordon Henderson This is free software with ABSOLUTELY NO WARRANTY. For details type: gpio -warranty Raspberry Pi Details: Type: Pi Zero-W, Revision: 01, Memory: 512MB, Maker: Sony * Device tree is enabled. *--> Raspberry Pi Zero W Rev 1.1 * This Raspberry Pi supports user-level GPIO access. pi@raspberrypi:~ $ gpio readall +-----+-----+---------+------+---+-Pi ZeroW-+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | | | 3.3v | | | 1 || 2 | | | 5v | | | | 2 | 8 | SDA.1 | IN | 1 | 3 || 4 | | | 5v | | | | 3 | 9 | SCL.1 | IN | 1 | 5 || 6 | | | 0v | | | | 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 0 | IN | TxD | 15 | 14 | | | | 0v | | | 9 || 10 | 1 | IN | RxD | 16 | 15 | | 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 | | 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 | | | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 | | 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | | | 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 | | 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 | | | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 | | 0 | 30 | SDA.0 | IN | 1 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 | | 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | | | 6 | 22 | GPIO.22 | IN | 1 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 | | 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | | | 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 | | 26 | 25 | GPIO.25 | IN | 0 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 | | | | 0v | | | 39 || 40 | 0 | IN | GPIO.29 | 29 | 21 | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+-Pi ZeroW-+---+------+---------+-----+-----+ pi@raspberrypi:~ $

bluetoothのインストール例

sudo apt-get install -y pi-bluetooth sudo reboot bluetoothctl Agent registered [bluetooth]# scan on Discovery started #出力例 [CHG] Controller B8:27:EB:43:FE:83 Discovering: yes [NEW] Device 57:80:9B:6B:4C:EC 57-80-9B-6B-4C-EC [NEW] Device 5F:55:F2:80:A7:2B 5F-55-F2-80-A7-2B [NEW] Device CE:EA:67:62:B6:7B Bryton Cadence [CHG] Device 57:80:9B:6B:4C:EC RSSI: -67 [CHG] Device 57:80:9B:6B:4C:EC RSSI: -81 Ctrl-D [bluetooth]# quit pi@raspberrypi:~ $

WiFi無しRaspberryPiのHeadless化

WiFi無しボード「Raspberry Pi Model B」でも、今回の方法で作成したSDを刺し、有線LANに接続して起動すると、そのままheadlessとして使用できる。無線の設定であるwpa_supplicant.confを、そのまま残したままでも特に問題はないようだ。 WiringPiをインストールして「gpio readall」を実行したログ出力は以下のようになる:
(Pinのアサイン状況が分かる)

gpio readall +-----+-----+---------+------+---+-Model B1-+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | | | 3.3v | | | 1 || 2 | | | 5v | | | | 2 | 8 | SDA.1 | IN | 1 | 3 || 4 | | | 5v | | | | 3 | 9 | SCL.1 | IN | 1 | 5 || 6 | | | 0v | | | | 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 | | | | 0v | | | 9 || 10 | 1 | ALT0 | RxD | 16 | 15 | | 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 | | 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 | | | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 | | 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | | | 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 | | 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 | | | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+-Model B1-+---+------+---------+-----+-----+

WiFi-USBドングル付きRaspberryPiのHeadless化

「Raspberry Pi 2 Model B」にWiFi-USBドングルを付けたものでも、今回の方法で作成したSDを刺し、起動させると、そのままWiFi接続可能なheadlessとして使用できる。
(該当のWiFi-USBドングルはlinuxで動作実績のあるもの)
なお、実験した感じでは、「Raspberry Pi 2 Model B」しか、このやり方では起動しないようだ。(USBドライバーの相違が原因?)
以下、ログ出力例(RAM容量、ボード種類などの確認):

$ free -h total used free shared buff/cache available Mem: 926Mi 118Mi 315Mi 18Mi 492Mi 733Mi Swap: 49Mi 0B 49Mi $ cat /proc/cpuinfo processor : 0 model name : ARMv7 Processor rev 5 (v7l) BogoMIPS : 38.40 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc07 CPU revision : 5 <省略> Hardware : BCM2835 Revision : a21041 Serial : 000000007d5c9e71 Model : Raspberry Pi 2 Model B Rev 1.1 $ uname -a Linux raspberrypi 4.19.75-v7+ #1270 SMP Tue Sep 24 18:45:11 BST 2019 armv7l GNU/Linux

RaspberryPi4のHeadless化

「Raspberry Pi 4 Model B」に、今回の方法で作成したSDを刺し、起動させることができる。
以下、ログ出力例(RAM容量、ボード種類の確認):

$ free -h total used free shared buff/cache available Mem: 3.8Gi 99Mi 3.3Gi 16Mi 441Mi 3.6Gi Swap: 49Mi 0B 49Mi $ cat /proc/cpuinfo processor : 0 model name : ARMv7 Processor rev 3 (v7l) BogoMIPS : 108.00 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xd08 CPU revision : 3 <省略> Hardware : BCM2835 Revision : c03112 Serial : 10000000f8cd9a91 Model : Raspberry Pi 4 Model B Rev 1.2 $ uname -a Linux raspberrypi 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux

Bug?

fullイメージのSDで起動した場合、「Raspberry Pi 4 Model B」では、/home/piには以下の状態になっていた。

$ ls MagPi

他のボードでは、以下のようなディレクトリができる:

$ ls Desktop Documents MagPi Pictures Templates Downloads Music Public Videos

たぶん、「Raspberry Pi 4 Model B」では、初ブート時にディレクトリを作成するスクリプトがエラーになっていると推測する。 空のディレクトリを作っているだけなので、必要があれば、シェルのコマンドでディレクトリを作れば良いだけだと思う。

WiFi接続性が悪い問題

sshにログインして使った印象では、WiFi接続性の良い順に並べると、WiFiドングル付き、RaspberryPiZero_W、RaspberryPi4(以下、「4」とする)になり、「4」が一番悪い。「4」の表示回路のノイズやCPUのノイズがWiFi電波に被ってWiFiの接続性能が落ちていると推測している。(RaspberryPiZero_WのWiFi接続性は特に問題ないレベルであった)
ネット情報にも以下のような記事がありRapberryPiのオンボードのWiFiは性能が悪いことは事実のようだ。

Raspberry Piで無線LANの反応が悪い時の対処法
Raspberry Pi 4の「特定の解像度でWi-Fiが不安定になる」問題を実際に検証してみた

気のせいかもしれないが、SD作成後の初ブート時のWiFi接続性と、それ以降の起動のWiFi接続性を比較すると、初ブート時のほうが良好だった。(ノイズ源となるべき回路の動作状況が異なっている???)

自分の環境でも、以下のように/etc/rc.localにHDMIのオフを入れたが「4」は改善しなかった。
(headless前提なのでHDMIをオフしても問題ない)
/etc/rc.local

#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi # HDMI off tvservice -o exit 0

結局、有効な解決方法が見つかるまでの回避策として「4」にWiFiのUSBドングルを刺して再起動したら、劇的にWiFiの接続性は改善した。(自動的にUSBドングルを認識するので、特に設定などを変える必要はない)

なお、この際、このままでも、特に問題ないようだが、wlan0,wlan1の2つにIPアドレスが割り振られるのでオンボードのwlan0を無効化して、割り振られるIPアドレスを1つにしたほうがスッキリする。それには以下を実行する:
wlan0無効化:

sudo iwconfig wlan0 txpower off sudo reboot

もとに戻すには以下を実行する:
wlan0有効化:

sudo iwconfig wlan0 txpower auto sudo reboot

参考URL:
Raspberry Pi で HDMI 接続のディスプレイをオン・オフ

以上

続きを読む "headless RaspberryPiインストール方法"

| | コメント (0)