でんげき☆ Network Service

Raspberry Pi 4 で運用実験中 Connect checker

No.29, No.28, No.27, No.26, No.25, No.24, No.237件]

Python の使い方メモ Vol.1

20220703053348-admin.png
 
時既に Perl の時代は終わり…世は Python が覇者となっている!って事なんでぼちぼち勉強しようかなーって思いつつちっとも重い腰が上がらないことはありませんか? 私はあります いやむしろずっとそんな感じです(瀧汗
まぁまぁそんな話はともかく…なんか動画サイトのアレをゴニョゴニョするのに便利な yt-dlp ってのがあるのですが…それが Python で書かれているらしいんですよね そんな訳で手っ取り早いインストール法と…過去のバージョンに戻したい!って時とかの操作法のメモなんかを少々ってかんじで

以降のメモは Python 3 を対象にしています
$ python --version
Python 3.8.10

Python モジュールのインストール ※ここでは yt-dlp をインストールする
$ sudo python -m pip install yt-dlp
もしくは…
$ sudo pip install yt-dlp
でもいいみたい? 違いがよく判ってないんで調べておくメモ

何かの都合で古いバージョンに戻したくなった時 ※ここでは yt-dlp を対象とする
$ pip install yt-dlp==
ERROR: Could not find a version that satisfies the requirement yt-dlp== (from versions: 2021.1.15, 2021.1.15.post1, 2021.1.16, 2021.1.20, 2021.1.24, 2021.1.24.post1, 2021.1.29, 2021.2.4, 2021.2.9, 2021.2.15, 2021.2.19, 2021.2.24, 2021.3.1, 2021.3.3, 2021.3.3.1, 2021.3.3.2, 2021.3.7, 2021.3.15, 2021.3.21, 2021.3.24, 2021.3.24.1, 2021.4.3, 2021.4.11, 2021.4.22, 2021.5.11, 2021.5.20, 2021.6.1, 2021.6.8, 2021.6.9, 2021.6.23, 2021.7.7, 2021.7.21, 2021.7.24, 2021.8.2, 2021.8.10, 2021.9.1, 2021.9.2, 2021.9.25, 2021.10.9, 2021.10.10, 2021.10.22, 2021.11.10, 2021.11.10.1, 2021.12.1, 2021.12.25, 2021.12.27, 2022.1.21, 2022.2.3, 2022.2.4, 2022.3.8, 2022.3.8.1, 2022.3.8.2, 2022.4.8, 2022.5.18, 2022.6.22, 2022.6.22.1, 2022.6.29)
ERROR: No matching distribution found for yt-dlp==

こんな感じでモジュール名の後ろに「==」を付ければバージョンが列挙される裏技みたいな感じ??

その中から指定のバージョンをインストールする ※ここでは yt-dlp を対象とする
$ sudo pip install yt-dlp==2022.5.18
こうすることで過去のバージョンとかでもインストールできます

ざっくり使った感じだとこの 2022.5.18 が TVer も abema もアレできていい感じですね

基礎中の基礎の前の初歩中の初歩な内容すぎて申し訳ないです… #Python #Ubuntu

情報 <1581文字>

かつや・大人様ランチ

20220522064131-admin.jpg
 
かつや の期間限定! 【大人の食べたい叶えます】あの頃を思い出す夢の競演!かつや「大人様ランチ」を食べてきました
オムカレーに海老フライとタルタルチキンカツとウインナーを一皿に盛りつけた夢の共演! わくわくが止まんない組み合わせの数々に期待が超高まります!
オムカレーだけでも美味しさ間違いなしなのに…そこにエビフライとチキンカツの満足感が追討ちをかけてきます そしてタルタルの風味が意外とカレーとマッチしてこれもアリですね!

なんか宣伝的な画像では素揚げのウインナーだったのが…いざ出てきてみたら衣がついたウインナーの天ぷらって感じで完膚なきまでに揚げ物欲が満たされますww
美味しいし食べ応えも大満足!!って感じの期間限定の人気メニューです 絶対にオススメなんで食べ逃しの無いようにしタイネ!!(>_<)w #外食記録

日記 <376文字>

Twitter(ツイッター)の隠しコマンド?

20220508181222-admin.png
 
Twitter(ツイッター)使ってますか? 私は使ってます…っていうかわりとべったりです(汗 そんな Twitter のホーム画面っていうかタイムラインに混入してくる「おすすめ」とか「〇〇さんが□□しました」系の推し(?)が本当にウザいですよねって事でその辺をどうにかできるかもしれない隠しコマンドがあるようなんで設定してみたメモです

そんな設定は「ミュートするキーワード」で行います ブラウザ版を使っている場合は→ https://twitter.com/settings/muted_keywo... にアクセスすることにより直接「ミュートするキーワード」にいけます

スマホ(Android)の場合は…

202205081812229-admin.png
左上のアイコンをタップしてメニューを出す

202205081812228-admin.png
下の方にある「設定とプライバシー」をタップする

202205081812227-admin.png
そのままメニューをたぐってもいいんだけど…判りやすく検索窓に「ミュート」と入力する

202205081812226-admin.png
出てきた「ミュートとブロック」をタップする

202205081812225-admin.png
「ミュートするキーワード」でたどり着けます

20220508185124-admin.png 202205081812224-admin.png
右下にあると思われる「+」でミュートするキーワードを設定するんだけど…この中で「ホームタイムライン」をチェックして「すべてのアカウント」を選び期間は「再度オンにするまで」にしとくと良いようです なおこの辺の設定はアカウントに対して行われてるようなんで PC ブラウザで設定すればそれがスマホアプリに反映されるし逆もまた然りって感じっぽいです 操作しやすいもので設定すればいいと思います
その辺の下準備が済んだところでミュートするキーワードです

ハイライト系
suggest_recap
suggest_recycled_tweet
generic_activity_highlights

おすすめユーザー系
who_to_follow_entry
suggest_who_to_follow

おすすめのツイート系
suggest_activity

○○さんがいいねしました系
suggest_activity_tweet
tweet-context with-icn

○○さんがフォローしています系
suggest_pyle_tweet
suggest_sc_tweet

ハッシュタグのおすすめ系
suggest_grouped_tweet_hashtag

他人のリプ表示をやめる系
filter:follows -filter:replies

過去のRT表示をやめる系
suggest_recycled_tweet_inline

よくわからないけど一応メモ
ActivityTweet
RankedOrganicTweet

この中で必要なものを選んで個々に設定すればいいようです。

202205081812223-admin.png
あーあとホーム画面の右上にあるアイコンをタップして…

202205081812222-admin.png
「最新のツイートがタイムラインに表示されます」って感じに設定しておく必要もあるようです

これで余計なものに邪魔されにくい平穏なタイムラインを楽しめます 「邪魔だな」って思ったおすすめなんかをちょっとづつ指定して試してみるといいでしょう
つーかまぁしょーみリスト管理しててホーム画面に来ることは滅多にないんでアレなんだけど(汗

  :

ミュートとは直接の関係はないんだけど…検索する時に便利なキーワードなどなどもせっかくなんでメモ

202205081812221-admin.png
そういや Android アプリ版の Twitter で実装されているんだけど…各人のプロフィールの右上にある「虫メガネ」アイコンですね これをタップすると「その人のツイートに限定した」検索ができるようです 検索クエリ的には from:@アカウント名 って感じですかね
その検索の応用っていうか…例えば「リツイートがやたらと多い人なんだけどその人が発したツイートだけを見たい!」って時なんかはその検索欄に「 」←全角スペースを入力するといいようです

その他にリプライのみを表示させたい場合は filter:replies を指定して…逆にリプライを除去したい場合は -filter:replies を指定します
メディア等が含まれたツイートのみを表示させたい場合は filter:links を指定して…逆にメディア等が含まれたツイートを除去したい場合は -filter:links を指定します

 検索するツイートの期間を絞り込みたい場合は…開始を since:YYYY-MM-DD と指定して終了を until:YYYY-MM-DD として設定します ※ YYYY は西暦, MM は月, DD は日を指します
コピペしやすいようにっていうか…そこそこ使い勝手がいい 1 年単位で列挙しておきます
since:2024-01-01 until:2024-12-31
since:2023-01-01 until:2023-12-31
since:2022-01-01 until:2022-12-31
since:2021-01-01 until:2021-12-31
since:2020-01-01 until:2020-12-31
since:2019-01-01 until:2019-12-31
since:2018-01-01 until:2018-12-31
since:2017-01-01 until:2017-12-31
since:2016-01-01 until:2016-12-31
since:2015-01-01 until:2015-12-31
since:2014-01-01 until:2014-12-31
since:2013-01-01 until:2013-12-31
since:2012-01-01 until:2012-12-31
since:2011-01-01 until:2011-12-31
since:2010-01-01 until:2010-12-31

・・とまぁこんな感じですかね またなにか思いついたら追加していくかも #Twitter

※追記※
だいぶん前に作ったやつだけど…そこそこ詳細に Twitter 検索できるようなやつ

情報 <2586文字>

続・モニタ無しでラズパイを VNC 接続できるとこまでセットアップする

20220429192311-admin.png
 
以前に 完全モニタ無しで Raspberry Pi 4 を VNC 接続できるとこまでセットアップするメモ なんてのを紹介していたんだけど…それから月日が流れ Raspberry Pi OS のバージョンが上がったっていうか色々とセットアップ方法が変更になったんでその辺をざっくり検証してみましたってメモです

20220429185131-admin.jpg 202204291851316-admin.png
そんな今回は某案件的な話で貸与して頂けた Raspberry Pi 400 を使用して 64-bit 版Raspberry Pi OS with desktop をモニタ無しっていうか SSH でログインしつつの VNC 接続できる所まで試してみました

今回の Raspberry Pi OS のバージョンアップの大きな変更っていうか…今までデフォルトで「pi」ってユーザが用意されていたのが今回からそれが廃止になったようです それに伴いパスワードを設定したユーザが不在(?)って事になり dd コマンドなりでイメージを書き込んだ後に boot パーティションのルートフォルダにファイル名が「ssh」もしくは「ssh.txt」のファイルを新規作成しただけでは SSH でログインできなくなってました

202204291851315-admin.png
それじゃどうしよう?って話なんですが…まぁ結果から云うとそれをどうにかする機能が追加された新しい Raspberry Pi Imager を使うって事らしいです
これの右下にある「歯車」のマークをクリックすると…

202204291851314-admin.png
「詳細な設定」として Pi OS の諸々の設定ができるようになります ユーザの設定だけでなく SSH の有効化や Wi-Fi の設定も一気に行えるんでこれは便利ですね!(>_<)w

  :

・・とまぁこれで話が終わっちゃうのも少々物足りない気がしたっていうか Pi Imager を使うことなくそれらの設定をどうにかする手法を模索してみました
まずはイメージファイルを dd なりで書き込んだものと Pi Imager を使って書き込んだものを比較してみました その結果 /boot/cmdline.txt に変更が加えられてたのと /boot/firstrun.sh が生成されていた事が判りました

それでは /boot/cmdline.txt から見ていきましょう

----- オリジナルの /boot/cmdline.txt -----
console=serial0,115200 console=tty1 root=PARTUUID=50a67c3e-02 rootfstype=ext4 fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh splash plymouth.ignore-serial-consoles
----------

----- Pi Imager が作った /boot/cmdline.txt -----
console=serial0,115200 console=tty1 root=PARTUUID=50a67c3e-02 rootfstype=ext4 fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh splash plymouth.ignore-serial-consoles systemd.run=/boot/firstrun.sh systemd.run_success_action=reboot systemd.unit=kernel-command-line.target
----------

これを見る限り Pi Imager を使わずにどうにかする時にはオリジナルの /boot/cmdline.txt の末尾に systemd.run=/boot/firstrun.sh systemd.run_success_action=reboot systemd.unit=kernel-command-line.target を付ければよさそうです

ただし「root=PARTUUID=50a67c3e-02」の部分ですかね…これは配布されるディスクイメージのバージョン毎に異なる値を設定する必要があるようです
その辺の PARTUUID を調べるには lsblk コマンドを使うといいらしい? 試しに実際に USB メモリに書き込んだものと…ディスクイメージを直接マウントしたものとで確認してみました

$ lsblk -o TYPE,KNAME,PARTUUID,LABEL,SIZE,VENDOR
TYPE KNAME    PARTUUID    LABEL    SIZE VENDOR
disk sdg                          29.9G silicon
part sdg1     50a67c3e-01 boot     256M
part sdg2     50a67c3e-02 rootfs   3.7G
rom  sr0                          1024M HL-DT-ST
part loop39p1 50a67c3e-01 boot     256M
part loop39p2 50a67c3e-02 rootfs   3.7G

これを見る限り /rootfs に設定された PARTUUID をコピペすればいいようですね この辺は dd なりでイメージを書き込んだ場合には気にする必要はなさそうだけど /boot/cmdline.txt を全て自作で用意したいような場合には気をつけたほうがいいのかな?って思いました

  :

お次は /boot/firstrun.sh です 長くてややこしいですが頑張って見ていきましょう

----- Pi Imager が作った /boot/firstrun.sh -----
#!/bin/bash

set +e

CURRENT_HOSTNAME=`cat /etc/hostname | tr -d " \t\n\r"`
echo HostName >/etc/hostname
sed -i "s/127.0.1.1.*$CURRENT_HOSTNAME/127.0.1.1\tHostName/g" /etc/hosts
FIRSTUSER=`getent passwd 1000 | cut -d: -f1`
FIRSTUSERHOME=`getent passwd 1000 | cut -d: -f6`
if [ -f /usr/lib/userconf-pi/userconf ]; then
   /usr/lib/userconf-pi/userconf 'UserName' '$5$Salt$xxxxxxxxxx..'
else
   echo "$FIRSTUSER:"'$5$Salt$xxxxxxxxxx..' | chpasswd -e
   if [ "$FIRSTUSER" != "UserName" ]; then
      usermod -l "UserName" "$FIRSTUSER"
      usermod -m -d "/home/UserName" "UserName"
      groupmod -n "UserName" "$FIRSTUSER"
      if grep -q "^autologin-user=" /etc/lightdm/lightdm.conf ; then
         sed /etc/lightdm/lightdm.conf -i -e "s/^autologin-user=.*/autologin-user=UserName/"
      fi
      if [ -f /etc/systemd/system/getty@tty1.service.d/autologin.conf ]; then
         sed /etc/systemd/system/getty@tty1.service.d/autologin.conf -i -e "s/$FIRSTUSER/UserName/"
      fi
      if [ -f /etc/sudoers.d/010_pi-nopasswd ]; then
         sed -i "s/^$FIRSTUSER /UserName /" /etc/sudoers.d/010_pi-nopasswd
      fi
   fi
fi
systemctl enable ssh
cat >/etc/wpa_supplicant/wpa_supplicant.conf <<'WPAEOF'
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
ap_scan=1

update_config=1
network={
   ssid="Wi-Fi_SSID"
   psk=0123456789abcdefxxxx..
}

WPAEOF
chmod 600 /etc/wpa_supplicant/wpa_supplicant.conf
rfkill unblock wifi
for filename in /var/lib/systemd/rfkill/*:wlan ; do
  echo 0 > $filename
done
rm -f /etc/localtime
echo "Asia/Tokyo" >/etc/timezone
dpkg-reconfigure -f noninteractive tzdata
cat >/etc/default/keyboard <<'KBEOF'
XKBMODEL="pc105"
XKBLAYOUT="jp"
XKBVARIANT=""
XKBOPTIONS=""

KBEOF
dpkg-reconfigure -f noninteractive keyboard-configuration
rm -f /boot/firstrun.sh
sed -i 's| systemd.run.*||g' /boot/cmdline.txt
exit 0
----------

この中で書き換えるべき点はホストネームとなる HostName と作成するユーザ名 UserName & パスワード $5$Salt$xxxxxxxxxx.. と Wi-Fi に接続するための Wi-Fi_SSID &パスワード 0123456789abcdefxxxx.. の箇所でしょうか
その辺を踏まえた上で…もちっと再設定しやすいように改変してみました

----- 改変版 /boot/firstrun.sh -----
#!/bin/bash

USER='UserName'
PASS='$5$Salt$xxxxxxxxxx..'
WIFISSID='Wi-Fi_SSID'
WIFIPASS='0123456789abcdefxxxx..'
HOST='HostName'

set +e

CURRENT_HOSTNAME=`cat /etc/hostname | tr -d " \t\n\r"`
echo $HOST >/etc/hostname
sed -i "s/127.0.1.1.*$CURRENT_HOSTNAME/127.0.1.1\t$HOST/g" /etc/hosts
FIRSTUSER=`getent passwd 1000 | cut -d: -f1`
FIRSTUSERHOME=`getent passwd 1000 | cut -d: -f6`
if [ -f /usr/lib/userconf-pi/userconf ]; then
   /usr/lib/userconf-pi/userconf "$USER" "$PASS"
else
   echo "$FIRSTUSER:$PASS" | chpasswd -e
   if [ "$FIRSTUSER" != "$USER" ]; then
      usermod -l "$USER" "$FIRSTUSER"
      usermod -m -d "/home/$USER" "$USER"
      groupmod -n "$USER" "$FIRSTUSER"
      if grep -q "^autologin-user=" /etc/lightdm/lightdm.conf ; then
         sed /etc/lightdm/lightdm.conf -i -e "s/^autologin-user=.*/autologin-user=$USER/"
      fi
      if [ -f /etc/systemd/system/getty@tty1.service.d/autologin.conf ]; then
         sed /etc/systemd/system/getty@tty1.service.d/autologin.conf -i -e "s/$FIRSTUSER/$USER/"
      fi
      if [ -f /etc/sudoers.d/010_pi-nopasswd ]; then
         sed -i "s/^$FIRSTUSER /$USER /" /etc/sudoers.d/010_pi-nopasswd
      fi
   fi
fi
systemctl enable ssh
cat >/etc/wpa_supplicant/wpa_supplicant.conf <<WPAEOF
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
ap_scan=1

update_config=1
network={
   ssid="$WIFISSID"
   psk=$WIFIPASS
}

WPAEOF
chmod 600 /etc/wpa_supplicant/wpa_supplicant.conf
rfkill unblock wifi
for filename in /var/lib/systemd/rfkill/*:wlan ; do
  echo 0 > $filename
done
rm -f /etc/localtime
echo "Asia/Tokyo" >/etc/timezone
dpkg-reconfigure -f noninteractive tzdata
cat >/etc/default/keyboard <<'KBEOF'
XKBMODEL="pc105"
XKBLAYOUT="jp"
XKBVARIANT=""
XKBOPTIONS=""

KBEOF
dpkg-reconfigure -f noninteractive keyboard-configuration
rm -f /boot/firstrun.sh
sed -i 's| systemd.run.*||g' /boot/cmdline.txt
exit 0
----------

こんな感じでしょうか 設定すべき項目を最初の方に集めてありそこを書き換えればいいようにしてみました
その中で注意すべき点と云いますか…パスワードですね
USER='UserName'
PASS='$5$Salt$xxxxxxxxxx..'

ログインするユーザのパスワードは暗号化されたものを指定する必要があるようです これは openssl passwd コマンドで生成できます

$ openssl passwd -5 -salt=Salt password
-5 オプションは SHA256 アルゴリズムでの暗号化を行います この他にも SHA512 で暗号化する -6 オプションや MD5 で暗号化する -1 オプションとかがあるようです
-salt を指定すると更に複雑な暗号化を行うことができるらしい? 本来なら -salt=$RANDOM のようにランダムに生成した文字列を指定するのが推奨されているようだけどお好みの文字列でも暗号化できます まぁなんか面倒くさそうだな…って感じなら -salt オプションを省略しても問題はないんですが汗

この /boot/firstrun.sh でユーザのパスワードを指定する際には必ず暗号化されたパスワードを使用する必要があり…平文のパスワードは使えません どうしても平文のパスワードを使いたい場合は /boot/firstrun.sh/rootfs/usr/lib/userconf-pi/userconf 内の「chpasswd -e」の「-e」を削除すればできなくもないけど… /rootfs/usr/lib/userconf-pi/userconf は ext4 ファイルシステムなので OS によっては読み書きできないかもだしアクセス権が root なのでその辺もどうにかしないといけないので色々と面倒です

そんな訳なんで…初ログイン後にすぐ別のパスワードに書き換えることを前提に仮的なパスワードを作っておきました
$ openssl passwd -5 -salt=pass pass として作成した $5$pass$Rl0JZvvs0bt2Lu8dfAumW11vh2yrd.LfOysdTyQ7Yt5 って感じのセキュリティのかけらもない意識低すぎて気絶しそうなパスワードですが実際にこれを設定した後に「pass」なるパスワード文字列でログインできます

※ これでログインしたら直ちに passwd コマンドなりで別のパスワードを再設定してください!

ユーザ名の設定の他に Wi-Fi についての設定というかパスワードについても説明しておきます
WIFISSID='Wi-Fi_SSID'
WIFIPASS='0123456789abcdefxxxx..'

ここでも暗号化されたパスワードを使用します これは wpa_passphrase コマンドで生成できます

$ wpa_passphrase "Wi-Fi_SSID" "password"
network={
   ssid="Wi-Fi_SSID"
   #psk="password"
   psk=bd3f1ad8bd45873a14351f4209ab719147a960587508a8c89ef776cd9b43cefb
}
こんな感じで 256bit PSK アルゴリズムを用いた暗号化パスワードが生成されます このパスワードを WIFIPASS='0123456789abcdefxxxx..' の部分に貼り付けてやれば ok です
ちなみに #psk="password" って平文のパスワードがコメントして出てるっていうかパスワードをダブルクォート「""」で囲んでやれば平文のパスワードを指定できるんで… WIFIPASS='"password"' って指定も ok です ただしこの設定はシステムが可動した後も /etc/wpa_supplicant/wpa_supplicant.conf 内に残り続けることになるんでリスクがあります 平文のパスワードは危険を承知した上でご使用ください

  :

まぁそんなこんなで上記の /boot/cmdline.txt と /boot/firstrun.sh を用意したらラズパイの電源を入れて起動します 数分ほど待った後に SSH でログインできます ログインした後は概ね 完全モニタ無しで Raspberry Pi 4 を VNC 接続できるとこまでセットアップするメモ の手順で VNC 接続できますが…その辺を切り取って手短に解説しておきます

まずは SSH でログインして $ sudo raspi-config 設定ツールを起動する キーボードの矢印キーで移動してエンターキーで決定ってスタイルです Tab キーを使う場面もあります ※ 画像は古いバージョンのものなので少々表示が異なる場合があります

202110151828034-admin.png
3 Interface Options を選ぶ

202110151828035-admin.png
I3 VNC を選ぶ

202110151828036-admin.png
VNC サーバを有効にするけどいいの?と聞かれるんで <Yes> を選ぶ

202110151828037-admin.png
設定完了

お次は vncserver-x11 ファイルを編集する
$ sudo nano /root/.vnc/config.d/vncserver-x11
末尾に以下の 3 行を追加します
2021101518280310-admin.png
Authentication=VncAuth
Encryption=AlwaysOff
Password=


VNC サーバを再起動する
$ sudo systemctl restart vncserver-x11-serviced

VNC のパスワードを設定する
$ sudo vncpasswd -service

VNC サーバを再起動する
$ sudo systemctl restart vncserver-x11-serviced

202204291851313-admin.png
以前はこの後に /boot/config.txt を編集する必要があったけど…今回はこの作業をする事なく VNC 接続できました

202204291851312-admin.png
せっかくなんで日本語化の設定も行っておきましょう

202204291851311-admin.png
Raspberry Pi Configuration の Location タブの Set Locate ボタンを押して Language と Character Set を設定して OK ボタンを押下する
その後に再起動することにより設定が反映され表示が日本語になります

あーあとお好みにより $ sudo apt install ibus-mozc でローマ字かな漢字変換っていうかインプット・メソッドをインストールしておくのもいいかも知れません これも再起動後に有効になります

20220429185131-admin.png
既に設定した後なんで心もち表示が違うかもだけど…右上のインジケータにあるキーボードマークをクリックして Mozc を選べば ok です

  :

まぁだいたいこんな感じですかね 今後のバージョンアップなりで使えなくなるかもな資料ですが…とりあえず /boot/firstrun.sh が何をしていたのかをざっくり知ることができてよかったです
つーか世間的に Ubuntu Desktop 22.04 LTS on a Raspberry Pi が話題のようですね…これはいっぺん試してみなきゃ!(>_<)wって感じで今回はこの辺で #[Raspberry Pi]

※ 追記 ※
上記の話とは概ね関係ないんだけど…ラズパイの Bootloader イメージを Raspberry Pi Imager を使わずにダウンロードしたい場合は https://downloads.raspberrypi.org/eeprom... に記された "SD Card Boot", "USB Boot", "Network Boot" のそれぞれの url を参照するといいらしい?(無保証 ちょっと調べてみたら判明した気がしたんで今後のもしものために記載しておくメモ

情報 <9939文字>

貧者のラーツー・安っすいアルコールストーブ

20220413153639-admin.jpg
 
某Dイソー を気ままにぷらぷら眺めていたら…ふと安っすいアルコールストーブを見つけたんでモノは試しに買ってきてしまいました

2022041315363912-admin.jpg
こんな感じのやつ 値段が見切れちゃってるけど…税抜き 200 円でした もうひと回り大きな 300 円のもあったけど…ぼっちのソロ使用なんで小さい方でいいかなーって事で小さい方を選びました(泪

2022041315363911-admin.jpg
サイズ感はこんな感じです

2022041315363910-admin.jpg
税抜き 200 円にしちゃ頑張って作ってあるなぁってイメージ

202204131536399-admin.jpg
フタにはパッキンが付いてます まんだ試してないけど…燃料を入れたままで持ち運びできそう?

  :

202204131536398-admin.jpg
それじゃ早速アルコールを入れて使用してみましょう ざっくり赤色の線の辺りまで燃料を入れてライターで着火!

202204131536396-admin.jpg
五徳は手持ちの エスビット・ポケットストーブ っぽいストーブを使用しました 気温 26℃ くらいでほぼ無風の状態です

202204131536395-admin.jpg
アルコールストーブ本体が暖まってくると猛烈に火力が上がってきてわりとすぐに沸騰しちゃう力強さがありますね

202204131536394-admin.jpg
ラーツーは楽しい

気温 26℃ くらいでほぼ無風だと燃料を入れすぎましたって感じでしたね 感触としては 0℃ くらいの環境でも 500ml の水を沸騰させてラーメンを煮るくらいの能力がありそうです
ただし…今回は撮影の見栄え的に使ってなかった「風防」は必須となるでしょう アルコールストーブは特に風に弱いのでその辺は気を使う必要があると思います もちろん鍋のフタも必ず用意しておきましょう
税抜き 200 円の代物ですが…思ってたよりパワフルで使い勝手がよかったです ただし火力の調節ができないっていうか…付属のフタはパッキンが熱に弱そうってことで火力調整にかぶせるとかが出来ないんで「もうちょっと弱火で使いたい!」って思うのであれば別に鉄製の仕切り板のようなものを持っていく必要があるんじゃないかと思いました

  :

202204131536393-admin.jpg
あと…それとは別に 某Wークマン耐熱アルミテーブル を買ってきました

202204131536392-admin.jpg 202204131536391-admin.jpg
コンパクトに折り畳むことが出来て持ち運びもカンタン! 見た目以上に「がっしり」した作りでとても安心感がありますね これはソロのラーツーに必須のアイテムなんで迷う前に買え!って感じですね!(>_<)w

まぁまぁそんなこなんで寒く厳しい冬が終わり…ラーツーに程よい季節の到来でほんと楽しみですね! ちょうどいい季節は「あっ!」という間に通り過ぎちゃうんで油断なく楽しんじゃおうぜ!! #アウトドア

趣味 <1061文字>

M5StickC Plus の開発環境を構築する

20220326153456-admin.jpg
 
elchika公式 @elchika_info さんがリツイートキャンペーンを行っていたのですが…

それに応募したら大当選しちゃいました!!

202203261507198-admin.jpg
そんな訳で M5StickC Plus を頂きました! 本当にありがとございます!!(>_<)w
こないだから Arduino Pro Micro をぼちぼちとイジり始めてマイコンへの興味が盛り上がってきた所なんで…さらに見識を深めることができそうで嬉しいです!(>_<)w

  :

そんな M5StickC Plus の外観をざっくり見てみましょう

202203261507197-admin.jpg 202203261507191-admin.jpg
裏面には I/O の説明が所狭しと書かれています 何かとよく使う(と思われる)ボタンや LED のピン番号なんかも書かれているんで…ド忘れした時とかでも困らないと思います

20220326150719-admin.jpg
USB は Type-C のようです

202203261507195-admin.jpg 202203261507194-admin.jpg
USB を挿して電源が供給されると起動するようです 何やらセンサーの状況が見れるようなものとかマイクのテストや赤外線の送信(?)のようなものを「M5」ボタンで切り替えながら楽しめるようです

202203261507193-admin.jpg
ちなみに電源の ON/OFF は側面のボタンを長押しすることにより操作できるようです 電源を ON する場合には 2 秒位の長押しで電源を OFF にする場合は 6 秒くらい長押しするといいようです

  :

そんな訳なんで動作チェックがてら開発環境を整えていきましょう M5StickC Plus (M5Stackシリーズ) の開発環境は Arduino IDE を使ってどうにかできるようなんで手軽っちゃぁ手軽ですよね
その辺の詳細な手順については 公式 に詳しく書かれていたんで…それを実際に試していきたいと思います

2022032615071914-admin.png
まずは Arduino IDE の「ファイル」→「環境設定」を開きます

2022032615071913-admin.png
その中の「追加ボードマネージャのURL」に https://m5stack.oss-cn-shenzhen.aliyuncs... を追加して「ok」します

2022032615071912-admin.png
お次に「ツール」→「ボード」→「ボードマネージャ」を開きます

2022032615071911-admin.png
検索欄に「m5stack」と入れて出てきた「M5Stack」をインストールする

2022032615071910-admin.png
これで「ツール」→「ボード」とした際に「M5Stick-C Plus」を選べるようになります

  :

使用ボードの設定が済んだらライブラリをインストールします

202203261507199-admin.png
「スケッチ」→「ライブラリをインクルード」→「ライブラリを管理」を開きます

202203261507198-admin.png
検索欄に「m5stickcplus」と入れて出てきた「M5StickCPlus」をインストールします

202203261507197-admin.png
なんか関連したライブラリ(?)も一緒にインストールするか聞かれるんだけど…よく判んなかったんで全部入れちゃいました(汗

202203261507196-admin.png
ちなみに…もし間違ったライブラリを入れちゃった時にそれを消したい場合は「ファイル」→「環境設定」で確認できる「スケッチブックの保存場所」で確認できるフォルダを開いて libraries フォルダを開いて

202203261507195-admin.png
該当するライブラリが入っているフォルダを削除して Arduino IDE を再起動すると消すことができるようです

202203261507194-admin.png 202203261507193-admin.png
まぁとにかくコレで M5StickC Plus のライブラリをインクルードできるようになりました

  :

それじゃ実際にコードを書いてコンパイルして M5StickC Plus に書き込んでみましょう まぁ本来なら LED を点滅させる…いわゆる「Lチカ」を試すべきトコロなんですが液晶ディスプレイが搭載されているって事なんでそれに文字を出力させてみましょう

----------

# include <M5StickCPlus.h>

void setup(){
  M5.begin(); // M5StickC Plus の初期化?
}

void loop() {
  M5.Lcd.setTextSize(3);  // フォントサイズ
  M5.Lcd.setRotation(3);  // 画面表示の向き
  M5.Lcd.print("Hello World");  // お決まりのやつ
}

----------

202203261507191-admin.png
ざっくりこんな感じですかね これをマイコンボードに書き込んでみましょう

202203261507192-admin.jpg
無事に「Hello World」と表示されて大成功です!

  :

ちなみにコンパイル時に…我が家の環境では以下のようなエラーが発生しました

Traceback (most recent call last):
  File "/home/nekoyama/.arduino15/packages/m5stack/tools/esptool_py/3.1.0/esptool.py", line 38, in <module>
    import serial
ModuleNotFoundError: No module named 'serial'
exit status 1
ボードM5Stick-C-Plusに対するコンパイル時にエラーが発生しました。


これは Python にシリアル通信するための pyserial モジュールが入ってない時に発生するらしいので…

202203261507192-admin.png
pip install pyserial としてインストールしておけばいいようですメモ

  :

20220326150719-admin.png
さらにちなみに初回起動時に動いていたセンサーの状況が見れるようなものとかマイクのテストや赤外線の送信(?)のようなものは「ファイル」→「スケッチ例」→「M5StickCPlus」→「FactoryTest」で再び入れ直せるようです 他にも参考になりそうなものが用意されているんで…ざっと目を通しておくといいかもです

  :

Arduino Pro Micro と M5StickC Plus を比べると…すぐに使える I/O が豊富でいろいろ興味を駆り立てられてしまいますね! 特に ESP32 ってやつですかね Wi-Fi でコネクションを確立したりその後に HTTP としてサーバからドキュメンをを取ってこれたりもできるようなんで Web サーバと連携させて M5StickC Plus をリモートで操作するようなものとか作れるかもしれんですね!
そんな感じで引き続きぼちぼちイジっていきたいと思います #Arduino #M5StickC

情報 <2732文字>

Android と PC のための adb メモ

20220321135913-admin.png
 
Android Debug Bridge(adb)なるものがあります Debug Bridge なんて聞くと「なんか面倒くさそうだな…」って思いがちだけど…一般利用者的な使い方でも「知っておくと得をする」ような便利な機能があるっていうか忘れがちな使い方をまとめて忘れ物防止メモって感じで書き留めておきます

  :

一般的には Android 端末と PC を USB ケーブルで繋ぎます なんかここんとこ Wi-Fi を使ってケーブル無しで繋ぐ手法が確立されてきてるようだけど…その話は後述って感じで

2022032113591336-admin.png 2022032113591335-admin.png
まずはスマホ側の設定ってことで「設定」メニューから「システム」→「端末情報」と進みます ※機種により若干の操作法の違い有り

2022032113591334-admin.png
その中にある「ビルド番号」を連打する

2022032113591333-admin.png
既に有効にしてあったんでアレだけど…これで「開発者向けオプション」を有効にできます

※機種によっては「設定」メニューからいきなり「デバイス情報」って入る場合や「詳細設定」の中に入っている場合とかがあるようです まぁその辺はそれっぽい項目を選びつつ「ビルド番号」を探し出してそれを連打してください(汗

2022032113591332-admin.png 2022032113591331-admin.png
次に「設定」メニューから「システム」→「詳細設定」と進むと「開発者向けオプション」が現れます ※これも機種によって進むべきメニュー項目が違う場合があるんで…あちこち探して辿り着いてください(汗

2022032113591330-admin.png 2022032113591329-admin.png
「開発者向けオプション」内にある「USBデバッグ」をオンにして許可する これで端末側の設定は概ね完了です

  :

お次は PC 側の設定ってことで…本来 adb ってやつは Android Studio って開発ツールに含まれているものなんでそれをセットアップする必要があるんだけど単に adb だけを使いたい人向けにシンプルなパッケージが用意されているんでそれを入れることにします

2022032113591328-admin.png
sudo apt install adb

なお動作検証っていうか…基本的に xubuntu 20.04 LTS を USB メモリに書き込んだものをお試しモードっていうかライブ起動して諸々を試しています 画像の撮り忘れなんかで…本番環境の Ubuntu MATE 20.04 LTS を使う場合もありますがその辺はご了笑ください汗

2022032113591327-admin.png
インストールが完了したら先ほどの「USBデバッグ」をオンにした Android と PC を USB ケーブルで繋ぎ adb start-server してみましょう daemon started successfully と出れば成功です
この操作は省略してもいいのですが…接続した Android 機と PC とのやりとりを管理するデーモン(adbd)の起動を明確に確認できるので知っておいていいと思います
ちなみにデーモン(adbd)を終了する際には adb kill-server します いろいろな端末を繋ぎつつ作業してると稀に動作が不安定になる場合とかあるようなので…いったんデーモンを終了させて再び起動させるとうまくいく時があります

2022032113591326-admin.png
そんな adb ですが 1 台の PC に複数台の Android を接続することができます 接続した Android(のシリアル) は adb devices で確認することができます

2022032113591325-admin.png
そのシリアルを adb の -s オプションを使って指定するとその Android 機を操作できます 画像はそれぞれの Android 内の proc フォルダ内にある cpuinfo ファイルの末尾 10 行くらいを表示させた一例です
なお PC に 1 台だけ Android 機を接続して使用する際にはこの -s オプションは不要です 今後は説明の簡略化っていうか 1 台だけの接続にして -s オプションは省略した感じでいきます

  :

それでは adb のよく使うコマンドの説明をちょびっとだけ…

2022032113591324-admin.png
adb shell で接続した Android 機にログイン(?)できます コマンドライン上の操作で Linux 系のコマンドが使えます

2022032113591323-admin.png
adb shell コマンド名 だと PC 側の端末上で接続した Android 機のコマンドを実行できます 実行結果を PC 側のファイルにリダイレクトしたりパイプに送り込んだりできます
ちなみにここで試している pm コマンドはパッケージ・マネージャ系のコマンドですね これに list package なる引数を与えて起動するとその端末にインストールされているアプリの一覧を確認できます ここではその結果から grep を用いて必要な行だけ抽出して表示させています

2022032113591322-admin.png 2022032113591321-admin.png
パッケージの一覧を確認できたってことで…それじゃ Android 機からファイルを取ってくる adb pull を使って apk(アプリ) を抜いてみましょう
目的とするアプリの ID(?) を指定することで apk ファイルを取得できます これはブラウザを使い Google Play で目的のアプリを表示させたアドレス欄にも表示されているんでその辺を参考にして grep で絞り込むといいでしょう
そうして出てきた中から /data/app/〜/base.apk を選択してコピーして adb pull /data/app/〜/base.apk として実行すると PC 側に base.apk として持ってこれます

この apk ファイルはそのまま Android 機にインストールすることができます インストールする場合は目的の Android 機に繋ぎ替えた後に adb install base.apk とすれば ok です

2022032113591320-admin.png 2022032113591319-admin.png
モノは試しに Fire HD 10 タブレット (10インチHDディスプレイ) 32GB - Alexa搭載 にインストールしてみました もともと Amazon apps 版の フェアリードール が入ってたんだけど…それとは別にインストールすることができました
Amazon Fire には Google Play が入ってないんだけどこの手法を使えばアプリのインストールが可能です…が多くの場合ハードやセキュリティの制約などで入れられないことが多いです まぁどうしてもの非常時に入ったらイイナ!って感じで覚えておくといいかもです(汗

  :

アプリのバックアップの別の手法として adb backup アプリID ってのもあるようですね ただこれは機種ごとのセキュリティ設定が強く影響するのか…同じアプリでも G 社の Android だとうまくいくけど S 社のそれだとうまくいかないなんてことがあるようです
まぁもしうまくバックアップすることができたとして…出来上がった *.ab ファイルを展開するツールが存在するっぽい?
android-backup-extractor ってものらしく abe.jar ってのがそれらしいです Java 環境が必要で java -jar abe.jar unpack 解凍元.ab 解凍先.tar で展開できるようです

  :

Android 機のスクリーンショットを PC で撮ってそのファイルを PC に保存するなんてこともできるようです

2022032113591311-admin.png
例えば adb exec-out screencap -p > ss$(date +%Y%m%d%H%M%S).png なんてすると実行した日時を付加した ss が PNG で PC に直接保存できます スマホの「電源 + 音量ダウン」のボタン同時押しがそれなりに使いにくいんで…微妙なタイミングを要するスクリーンショットを撮りたい時などに重宝すると思います

  :

Android 機の画面を PC 上で表示させられる scrcpy ってのがあるらしいです これは sudo apt install scrcpy で入れることができるようだけど…

2022032113591318-admin.png
我が家の環境ではエラーが出て動きませんでした

2022032113591317-admin.png
それじゃ別の手法で!ってことで snap 版の scrcpy を sudo snap install scrcpy で入れてみました ちなみに apt で入れる scrcpy の方が PATH の優先順位が高いんで /snap/bin/scrcpy って感じのフルパス指定で起動してみます

2022032113591316-admin.png
snap 版の scrcpy だとうまく動きました! 思ってたより動きもスムーズでいい感じです!(>_<)w
そんな snap 版の scrcpy を毎回毎回フルパス指定で起動するのも面倒だな…って事なんで snap の別名設定を使ってみることにします

2022032113591315-admin.png
設定は sudo snap alias 元のコマンド名 新しいコマンド名 でできるようなんで sudo snap alias scrcpy Scrcpy って感じで頭文字を大文字にしてみました エイリアスを確認する際には snap aliases とするようです

  :

同様に Android 機の音声を PC 上で再生させられる sndcpy ってのがあるらしいです これは rom1v / sndcpy の Get the app から sndcpy-v1.1.zip (※20220321現在) を落としてきて展開して…その中の sndcpy (シェルスクリプト) を実行すればいいようです

2022032113591314-admin.png
先ほどの Scrcpy と sndcpy を同時に使ってみた例 音声は 0.5 秒くらい(?)遅れてきてるみたいですね あーあと sndcpy を使用する場合には PC に vlc (メディアプレイヤ) を入れておく必要があるようです
スマホとかの小さい画面とショボいスピーカーの音声を PC 側に出すと見やすくて音もよくてとてもゴキゲンです! 追加投資は USB ケーブルだけ!って手軽さがいいですね!

  :

そんな USB ケーブルで PC と Android 機を繋ぎっぱなしってのもなんか邪魔くさいんで…その辺をネットワーク (Wi-Fi等) でどうにかする手法があるようです ※使用するにあたり…最初の設定段階では USB ケーブルで繋いでおく必要があります

2022032113591313-admin.png 2022032113591312-admin.png
まず adb tcpip 5555 で listen するポートを 5555 に設定します ポート番号は 5555~5585 の範囲で奇数番号のポートが使用できるらしい?
次に adb connect 192.16x.x.x32 で Android 機の IP アドレスを指定して接続します Android 機の IP アドレスは「設定」→「ネットワークとインターネット」→「Wi-Fi」→「接続済みのAP」→「詳細設定」等で確認できます ※使用機種によりメニュー構成が若干違います

connected to 192.16x.x.x32:5555 などと表示され接続したら…この時点で USB ケーブルを抜いても ok です
あとは adb shell なりの adb コマンドをネットワーク経由で使用できます

  :

さらに最近では最初からネットワークで全てが完了する「ワイヤレス デバッグ」も使用できるようになりつつあります ※ Android OS 11 以降で adb も新しいものが必要になります

202203211359136-admin.png
sudo apt install adb で入れたものは Ver. 1.0.39 で…これは古いので使えません じゃぁどうしよう?ってことで…それじゃ Android Studio を入れてみましょう

202203211359135-admin.png 202203211359134-admin.png
Android Studio のダウンロードページ のダウンロードボタンを押下して…お決まりの了解したぜ!チェックした後にダウンロードします ダウンロードしたファイルを解凍して android-studio/bin/studio.sh を実行するとインストールが開始します 本気で使う気がないのなら…まぁこの辺は適当でいいと思います(汗

202203211359136-admin.png
標準的なインストールを行うと ~/Android/Sdk/platform-tools/ の中に adb が用意されるのでこれを使ってみます Ver. 1.0.41 でした

2022032113591310-admin.png
お次は Android OS 11 以降の設定を行います 「設定」→「システム」→「開発者向けオプション」→「ワイヤレス デバッグ」をオンにして…その項目をタップする

202203211359139-admin.png
タップしたらワイヤレス デバッグの設定に入れるので…「ペア設定コードによるデバイスのペア設定」をタップする

202203211359138-admin.png
すると必要な情報が表示されるので…これをもとに adb で接続設定していきます なお古い adb と混同するをアレなんで ~/Android/Sdk/platform-tools/adb って感じのフルパスでコマンドを起動しています

202203211359133-admin.png
先ほど表示されてた IP アドレスとポート番号で ~/Android/Sdk/platform-tools/adb pair 192.16x.x.x31:43015 って感じで実行します するとペアリング・コードを聞かれるのでそれを入力します ※ここでは 226441 でした これでペアリング設定は完了です

202203211359132-admin.png 202203211359137-admin.png
お次は実際に接続します これは ~/Android/Sdk/platform-tools/adb connect 192.16x.x.x31:40643 って感じで実行します 先ほどのペアリング設定のポート番号とは別のポート番号になるので注意してください

202203211359131-admin.png
成功すればこれでワイヤレス接続が完了しています 後は ~/Android/Sdk/platform-tools/adb shell するなり色々をネットワーク経由で行えます 少々手順が多くて面倒かなーって思いつつ…まぁ慣れてしまえば USB ケーブルを接続するより楽ちんかなーってイメージです
ただし先述の scrcpy や sndcpy は(20220321現在)対応していない感じでした この辺が早く対応してくれればなーって思います

※ 追記 ※
テストした環境の PATH 設定の都合で Ver. 1.0.39 の adb が参照されていたので…その辺をどうにかしたら sndcpy は動きました Android Studio で入れた Ver. 1.0.41 を優先的に使えるよう PATH を以下のように設定しました
export PATH="/home/$USER/Android/Sdk/platform-tools:$PATH" ※ 標準的(?)な Android Studio のインストールを行った場合
一時的な設定ならコマンドラインで上記のように実行するもよし…再起動後とかも永続的に使いたいのであれば ~/.profile を編集して…最終行辺りに上記のパス設定を追加しておくといいでしょう

ちなみに scrcpy は apt 版(Ver. 1.12.1)と snap 版(Ver. 1.23)のどちらもワイヤレス環境では動作しませんでした(-_-;)

  :

そんなこんなな adb の使い方いろいろでした 他にも音量の操作やら特定のイベントシグナルの送信などなどアプリ開発のデバッグに有用な機能が用意されているのですが…まぁ末端ユーザでは概ね必要のない機能なのでその辺はもっとプロの方が発する情報をご参照くださいってことで #Android #Ubuntu #コマンドヘルプ

情報 <6454文字>

DASHBOARD

■複合検索:

  • 投稿者名:
  • 投稿年月:
  • #タグ:
  • カテゴリ:
  • 出力順序:

■ハッシュタグ:

■カテゴリ:

■日付検索:

■機器状態:

Raspberry Pi 4 Status

編集

RSSフィード