鹿児島らぐ「鹿児島Linux勉強会 2021.03.1」にオンライン参加

IMG_20210314_183351

鹿児島らぐ「鹿児島Linux勉強会 2021.03.1」にオンライン(Discord)に参加しました.

参加者は申込み10人,飛び入り1人,欠席1人で延べ人数は10人でした.

以下のような話題で盛り上がりました.

  • Twitter クライアント sayaka ちゃんを Linux でも
  • Raspberry pi picoでコンポジット出力
  • ディレクトリ内のファイル名の比較ワンライナー
  • 質問,rootfsやLinuxカーネルを用意せずにu-bootのみインストールして起動できますか?
  • RaspberryPiでカードリーダー

私は,「Twitter クライアント sayaka ちゃんを Linux でも」として最近3.5.0がリリースされたsayakaの紹介をしました.

次回もオンラインで 2021-04/25(日) の開催予定です.

小江戸らぐ 3月のオフな集まり(第224回)にオンライン参加

koedo 2021 03

2021-03-13(土)に開催された「小江戸らぐ 3月のオフな集まり(第224回)」に参加しました.

以下のような発表がありました.

  • mailmanをインストールしてみた
  • AlmaLinuxインストールしてみた
  • Alma Linux (インストールだけ試す)
  • kube-state-metricsをためした
  • Debian DOCKER IMAGES from scratchAlpine Linuxの野良パッケージを作ってみた(完結編)
  • arm64のNextcloudでもCollaboraOnline
  • 「Fuzix」を「実機で」起動する
  • WeblateでOSSの翻訳に参加する, KiCadネタなど
  • micro:bit でワークショップを考える

私は,「arm64のNextcloudでもCollaboraOnline」というネタを発表しました.

ちなみに途中から裏山から参加しました.日が陰るとまだ肌寒いですね.

次回は2021-04-10(土)に開催予定です.

鹿児島Linux勉強会2021.02に参加

鹿児島Linux勉強会 2021.02は予定取り02/21(日)に開催されました.参加者は8人ほどでオンライン(Discord)で開催されました.

以下のような話題で盛り上がりました.

・スマートフォンをLinuxデスクトップのスピーカーに(してビデオ会議中に離席しても話に付いていけるようにする)
・GNU Radioの環境設定
・How to use Sourcetrail for kernel analysis
・はじめての980円ジャンクガラホ改造,UserLAndとUbuntu,ArchLinux
・摂氏と華氏をグラフにしてみた

終了後Aroundのテストがてら雑談をしました.Linux版クライアントももうすぐとのことなので気になっています.🐧

次回は03/06(土)のオープンソースカンファレンス2021 Online/Spring 2日目内で開催です.


以下はchatに出てきたリンク集です

https://kagolug.connpass.com/event/203393/
http://167.86.112.42:19001/p/kagolug-2021.02
https://gitlab.com/matoken/kagolug-2021.02/-/blob/master/slide/slide.asciidoc
https://github.com/matoken/kagolug-2021.02/releases/tag/1
https://avatars.githubusercontent.com/u/582400?s=400&v=4
https://www.asus.com/jp/Networking/RT-AC59U/
https://www.sanwa.co.jp/seihin_joho/thunderguard/index.html#kiso
https://www.youtube.com/watch?v=PZh5hzibdsk&vl=ja
https://www.youtube.com/channel/UCGhudK3AIG152KrfURCSb2Q
https://www.youtube.com/watch?v=PZh5hzibdsk
https://youtu.be/DVY-O4QOoMI
https://youtu.be/B496P9AuuOY
https://twitter.com/ichiken_make
https://amzn.to/2Wv56Yb
https://github.com/alanbjohnston/CubeSatSim/wiki/CubeSat-Simulator-Lite
https://repository-images.githubusercontent.com/149884796/82b70f00-6f07-11e9-9e3e-61ed89d9cb02
https://fosdem.org/2021/
https://fosdem.org/2021/news/2021-02-11-videos-on-fosdem/
https://fosdem.org/2021/schedule/track/free_software_radio/
https://fosdem.org/2021/schedule/event/fsr_gnu_radio_on_embedded_using_buildroot/
https://techlog.kishiro.com/2018/12/linuxfriio.html
https://matoken.org/nextcloud_cat.cgi?https://files.matoken.org/index.php/s/MiRMKyWWbZyxkZG/download
https://garapon.tv/pr_201703pc-app/
http://akiba.jpn.org/?p=37910
http://foltia.com/ANILOC/
https://www.amazon.co.jp/PLEX-PX-W3U4-USB%25E6%258E%25A5%25E7%25B6%259A-%25E5%259C%25B0%25E4%25B8%258A%25E3%2583%2587%25E3%2582%25B8%25E3%2582%25BF%25E3%2583%25AB%25E3%2583%25BBBS%25E3%2583%25BBCS%25E5%25AF%25BE%25E5%25BF%259CTV%25E3%2583%2581%25E3%2583%25A5%25E3%2583%25BC%25E3%2583%258A%25E3%2583%25BC/dp/B01MR4SLB6/ref=sr_1_23?__mk_ja_JP=%25E3%2582%25AB%25E3%2582%25BF%25E3%2582%25AB%25E3%2583%258A&dchild=1&keywords=Linux&qid=1613889374&s=computers&sr=1-23
https://www.hikaritv.net/
https://tailscale.com/
https://www6.nhk.or.jp/anime/program/detail.html?i=montana
https://rnavi.ndl.go.jp/research_guide/entry/post-442.php
https://www.nhk.or.jp/archives/
https://www.sourcetrail.com/
https://www.sourcetrail.com/documentation/#AppImage
https://deskreen.com/
https://appinventor.mit.edu/
https://connpass.com/event/201059/
http://www.kernelvm.org/
https://meet.around.co/r/kagolug
https://kagolug.connpass.com/event/203393/presentation/
https://www.youtube.com/watch?v=xdgNNP8j4gY
https://www.youtube.com/channel/UCxNoKygeZIE1AwZ_NdUCkhQ
https://forms.gle/KALd9U7fKmE6TNjQ7
https://twitter.com/pyconjptv
https://tv.pycon.jp/

小江戸らぐ 2月のオフな集まり(第223回)への参加と「DroidCamでもスマホをWebCamにする」を発表

2021-02-13(土)に小江戸らぐ 2月のオフな集まり(第223回)に参加しました.開催はZoom.usを利用したオンライン開催で参加者は20人ほどでした.

次のような発表がありました.

次回の開催は03/13(土)でオンライン開催です.

以下はその時発表したスライドをhtmlで書き出したものです.

DroidCamでもスマホをWebCamにする

USB port死にかけ?

  • スマホや2.5インチHDDを繋ぐと勝手に切れてしまう
  • スマホは数秒毎に充電ランプが付いたり消えたり
  • Webcamがビデオチャット中に使えなくなったり
  • 自己給電の3.5インチHDDは調子がいいような?
  • しばらく放置したり再起動すると直ったり?
  • USB周りのリセッタブルヒューズとかコンデンサとかが死にかけている?

正攻法

  • 端末買い替え
  • USB portを増設
    • PCI Express/PC Card/Express Card

懐が寂しい&増設できないマシン(◞‸◟)

そういえばネットワーク経由でUSBが共有できたはず

+--------+        +------------+       +---------------------+
| WebCam +------->+ USB HostPC |       | USB ClientPC        |
| C270   |  USB   |------------+       +---------------------+
+--------+        | USB/IP     |------>| USB/IP              |
                  +------------+ 1GbE  +--+------------------|
                                       |  +-->UVC/UAC        |
                                       +-------+-------------|
                                       |       +-->Video APP |
                                       +---------------------+

USB/IP少し試してみて

  • 設定してしまえばローカルとほとんど変わらない使用感
  • 別マシンが必要
  • UVCを使うならそこそこ太い回線が必要(1Gbpsあれば安心)

帯域がもったいない,エンコードするとずっと細い回線で高画質にできるよね
バックアップもほしい

スマートフォンの利用

スマートフォンを有線,ネットワーク経由でWebCamとして利用

  • Iriun Webcam
    • Android/iOS → Linux/macOS/Windowsへ
  • DroidCam
    • Android/iOS → Linux/Windowsへ

!

このときはDroidCamは専用kernel moduleが必要でめんどくさそうなので標準moduleが利用できるIriun Webcamを選択

それから約10ヶ月

Iriun Webcamの問題

  • Debianパッケージがsidで依存関係が解決できなくなっている
    • 手動で依存関係を解決してパッケージを展開してバイナリを実行することは可能
  • Video のみ(Audio機能がない)
  • closed source
  • 問い合わせ窓口が見当たらない

DroidCam

  • Android/iOS → Linux/Windowsへ共有
  • Video/Audio対応
  • 専用moduleが必要だったがv1.6+で通常のv4l2loopbackが利用できるようになった
  • 専用モジュールもDKMS使えばそう不便でもない?

導入

sourceを入手してインストールスクリプトを実行する(※amd64以外は要セルフビルド)

$ git clone https://github.com/dev47apps/droidcam/
$ cd droidcam
$ sudo ./install-client (1)
$ sudo ./install-dkms (2)
$ sudo ./install-video (3)
$ sudo ./install-sound (4)
  1. DroidCam Clientアプリとアンインストールスクリプト( /opt/droidcam-uninstall )導入
  2. droidcam module DKMS設定 ※オプション
  3. droidcam module設定 ※オプション
  4. サウンドモジュール設定(snd-aloop module自動読み込み) ※オプション

v4l2loopback利用時

$ cat /etc/modules-load.d/v4l2loopback.conf
v4l2loopback (1)
$ cat /etc/modprobe.d/v4l2loopback.conf
options v4l2loopback exclusive_caps=1 video_nr=6,7,8 card_label="Virtual Camera,v4l2loopback-7,v4l2loopback-8" (2)
  1. モジュール自動読み込み
  2. ビデオ形式をGStreamer caps指定,複数デバイス対応(オプション)

DroidCam v4l2loopback利用時

$ cat /etc/modules-load.d/droidcam.conf (1)
videodev
v4l2loopback_dc
$ cat /etc/modprobe.d/droidcam.conf (2)
options v4l2loopback_dc width=1920 height=1080 video_nr=9 card_label="DroidCam"
  1. モジュール自動読み込み
  2. 解像度,ビデオデバイス番号,ラベル指定

ビデオデバイス番号はv4l2loopbackより大きくするとOBS利用時にはまらない

SecureBoot

MOKを作成して署名しないとモジュールが利用できない
$ sudo modprobe -v  v4l2loopback
insmod /lib/modules/5.10.0-3-amd64/updates/dkms/v4l2loopback.ko exclusive_caps=1 video_nr=6,7,8 card_label="Virtual Camera,v4l2loopback-7,v4l2loopback-8"
modprobe: ERROR: could not insert 'v4l2loopback': Operation not permitted

Android側設定

koedo2020102 Dev47Apps

Androidアプリ起動

  • カメラ,マイク切り替えや設定あり

koedo2020102 DroidCam01

PC側でdroidcam起動

$ droidcam

koedo2020102 DroidCam GUI 01

カメラの操作も可能 :)

koedo2020102 DroidCam GUI 02

cliもある

$ droidcam-cli
Usage:
 droidcam-cli -l <port>
   Listen on 'port' for connections (video only)

 droidcam-cli [options] <ip> <port>
   Connect via ip

 droidcam-cli [options] adb <port>
   Connect via adb to Android device

 droidcam-cli [options] ios <port>
   Connect via usbmuxd to iDevice

Options:
 -a          Enable Audio
 -v          Enable Video
             (only -v by default)

 -size=WxH   Specify video size (when using the regular v4l2loopback module)
             Ex: 640x480, 1280x720, 1920x1080

Enter '?' for list of commands while streaming.

sound

  • Linux側でDroidCamを起動後, snd_aloop moduleとPulseAudioを紐付ける
$ pacmd load-module module-alsa-source device=hw:Loopback,1,1 \
        source_properties=device.description=droidcam_audio

!

+--------+        +------------+                 +------------+
|Android +------->+ DdoidCam   +---------------->+ Video APP  |
|DroidCam|  WiFi  +---+--------+  v4l2loopback   +------------+
+-----+--+   USB      |            snd_aloop     | Zoom.us    |
      ^               |                          | Discord    |
      +---------------+                          | Jitsi Meet |
        Camera Coltrole                          | :          |
                                                 +------------+

OBS Studio update

  • 26.1からLinux/macOSに仮想カメラ機能が標準機能に(v4l2loopback利用)
    • ディストリビューションのバージョンが古い場合snapで導入が便利
    • droidcamのmoduleと競合して不具合が起こることがあるのでその場合はdroidcamのデバイス番号を後ろに
    • ※以前からある仮想カメラプラグインのobs-v4l2sinkは出力デバイスを選択できる
  • Wayland対応もうすぐ

DroidCam OBS

!

+------------+        +------------+                   +------------+
|Android     +------->+ OBS Studio +------------------>+ Video APP  |
|DroidCam OBS|  WiFi  |------------+   v4l2loopback    +------------+
+------------+   USB  | text       |    snd_aloop      | Zoom.us    |
                      | Picture    |                   | Discord    |
                      | Video      |                   | Jitsi Meet |
                      | Desktop    |                   | :          |
                      | Camera     |                   +------------+
                      | <Filters>  |
                      +------------+

まとめ

  • USBポートを使わなくても USB/IP や スマートフォンでWebCam & Audio を利用できるようになった
  • どちらも毎回少し設定が必要なのが面倒
  • 安定度はUSB/IPの方が安定している
  • 画質はスマートフォンの方が上(Logitch C270とRakuten miniでの比較)
  • スマートフォンで直に参加という手も……でも画面小さいかな

鹿児島Linux User Groupの鹿児島Linux勉強会 2020.07(オンライン)に参加

  • 「鹿児島Linux勉強会 2020.07」
    日時
    2020-07-26(sun) 14:00〜17:00
    会場
    Discord
    テキストチャンネル「meetup-202007」,ボイスチャンネル「General」.
    前回まではボイスチャンネルを分けていたけど今の所勉強会のとき以外はボイスチャンネルが使われていない&間違える人が居たのでGeneralのみに.テキストチャンネルは毎回分けて終了後しばらくしたらアーカイブする感じにしています.

参加人数は申込者9人で実際の参加者は7人でした.地域は鹿児島県が3人,その他4人(東京都,静岡県,岐阜県,愛知県x2)オンラインになってからの鹿児島の参加人数が一番多かった気がします.

以下のような話題で盛り上がりました.

  • 「Photon OSを使ってみた話」
  • 「ssh login時の通知を簡単に設定できないか?の相談」
  • 「ArchiveBoxで自分用WebArchive(django版)」
  • 「5月のYoctoLTSの続報」
  • 「ArchLinuxのインストールがうまく行かない相談」
  • 「m3u8のプレイリストからダウンロード」
  • 「Free RADIUSサーバーの構築についての相談」

この中で私の発表は,「ArchiveBoxで自分用WebArchive(django版)」でした.鹿児島Linux勉強会2019.08(オンライン)での発表の続報でした.不具合が減っていろいろと機能も増えていい感じです.リモートで試せるようデモサーバをRaspberry Piで起動して触って貰ったりしました.

次回は08/23(日)の開催予定です.

Sipeed Lichee Nanoでhello world

2020-07-23低レベル勉強会に参加しました.Zoom.usでの開催でした.

内容はLinux名刺的なものを開発しようという内容で,リファレンスとしてSDカードサイズの小さなLinuxの動作するarmコンピュータのSipeed Lichee Nanoを使いました.

欲しい場合は1000円ちょいくらいからで入手できそうです.

Lichee Nanoを持っていない人はリモートで触れるようにしてあったので持っていない私も楽しめました.

このリモート開発の仕組みはLichee NanoとRaspberry PiをUSB経由のUARTで接続し,Raspberry PiでGNU screenを起動,ssh経由でGNU screenに繋いで操作という感じです.
GNU screenをGotty等にするとウェブブラウザで参加できてちょっと便利かもと思ったりも.(GoTTYは開発止まってるように見えるから別のもののほうがいいかもしれない)

Lichee Nanoで何かを動かしたい.armだけどarmhf動くのかな?とりあえずなにか転送して動かしてみようと.

とりあえずDebianのarmhfバイナリをuuencodeしてコピペで転送してみます.これが動けばDebianのパッケージ群が利用できるかもだけど…….

まずは簡単そうなfortuneを試します.

Debian sidでfortune-modパッケージのarmhfバイナリパッケージをダウンロードして展開(add archtecture armhfしてある環境)
$ apt download -t armhf fortune-mod
$ unar fortune-mod_1.99.1-7+b1_armhf.deb
$ cd fortune-mod_1.99.1-7+b1_armhf
$ tar xf data.tar.xz
$ cd usr/games

Lichee Nanoはserialで接続されていて,Internetには繋がっていないのでバイナリファイルの転送にはuudecode/uuencodeを使いました.久々です.
手元のGNU sharutils 4.15.2のuudecodeにはbase64を使う -m, --base64 があるので良さそう.と思ったけどLichee Nanoの方はbusyboxのもので非対応でした.

ローカル端末で圧縮してuuencodeしてクリップボードへ
$ gzip -c fortune | uuencode fortune.gz > fortune.gz.uu
$ cat fortune.gz.uu | xclip
リモートで伸張して解凍
# cat | uudecode    #ここでクリップボードから貼り付け
# zcat fortune.gz > fortune
# rm fortune.gz

そして…​…​

# ./fortune
-sh: ./fortune: not found
# ldd ./fortune
checking sub-depends for 'not found'
checking sub-depends for '/lib/libc.so.6'
/lib/ld-linux.so.3 (0xb6fa0000)
librecode.so.0 => not found (0x00000000)
libc.so.6 => /lib/libc.so.6 (0x00000000)
/lib/ld-linux.so.3 => /lib/ld-linux.so.3 (0x00000000)

これを動かすのはダイナミックリンクされているものを用意してあげないといけないのでストレージの容量的に難しいですね.

ここではgzipで圧縮しましたが,Lichee Nanoのbusyboxにxzがありました.gzipよりxzにしたほうが小さくなりますね.試してみるとこんな感じでした.$ xz -c fortune | uuencode fortune.xz > fortune.xz.uu

サイズ比較
-rw-r--r-- 1 matoken matoken 22368 Jul 23 15:11 fortune #元ファイル
-rw-r--r-- 1 matoken matoken 30844 Jul 23 14:58 fortune.uu #uudecode
-rw-r--r-- 1 matoken matoken 14975 Jul 23 15:08 fortune.gz.uu #zip + uudecode
-rw-r--r-- 1 matoken matoken 13047 Jul 23 15:47 fortune.xz.uu #xz + uudecode

そういえばあまり有名ではないですがbasE91なんてものもあります.base64よりサイズが小さくなりますが導入からやらないといけないのでちょっと面倒.

Hello worldを試してみます.適当にプログラムを用意してスタティックリンクでコンパイルしてみます.

$ cat hello.c
#include <stdio.h>
int
main(void)
{
    printf("Hello, world!\n");
    return 0;
}
$ gcc -static ./hello.c
$ ./a.out
Hello, world!
$ ls -l a.out
-rwxr-xr-x 1 pi pi 571120 7月 23 16:18 a.out

でかい…​…​

とりあえずでかいのはおいといてこれだとarm64なので動くはずがない.ということでクロスコンパイル環境を用意します.

今回試したホストはDebian sid amd64/Ubuntu 20.04 LTS arm64/Raspberry Pi OS arm64です.いずれも同じ手順でOKでした.

crossbuild-essential-<arch> パッケージで各種アーキテクチャの環境が導入できるようです.

$ apt-cache search crossbuild-essential-
crossbuild-essential-amd64 - Informational list of cross-build-essential packages
crossbuild-essential-arm64 - Informational list of cross-build-essential packages
crossbuild-essential-armel - Informational list of cross-build-essential packages
crossbuild-essential-armhf - Informational list of cross-build-essential packages
crossbuild-essential-i386 - Informational list of cross-build-essential packages
crossbuild-essential-powerpc - Informational list of cross-build-essential packages
crossbuild-essential-ppc64el - Informational list of cross-build-essential packages
crossbuild-essential-s390x - Informational list of cross-build-essential packages
crossbuild-essential-mips - Informational list of cross-build-essential packages
crossbuild-essential-mips64 - Informational list of cross-build-essential packages
crossbuild-essential-mips64el - Informational list of cross-build-essential packages
crossbuild-essential-mips64r6 - Informational list of cross-build-essential packages
crossbuild-essential-mips64r6el - Informational list of cross-build-essential packages
crossbuild-essential-mipsel - Informational list of cross-build-essential packages
crossbuild-essential-mipsr6 - Informational list of cross-build-essential packages
crossbuild-essential-mipsr6el - Informational list of cross-build-essential packages

沢山あります.今回はarmlf/armhfの crossbuild-essential-armel, crossbuild-essential-armhf を導入しました.

$ sudo apt install crossbuild-essential-armel crossbuild-essential-armhf

gccだけでいい場合はarmlfは gcc-arm-linux-gnueabi,armhfは gcc-arm-linux-gnueabihf だけでOKです.

まずは arm-linux-gnueabihf-gcc を使ってarmhfのバイナリを作ります.

$ /usr/bin/arm-linux-gnueabihf-gcc -static ./hello.c
$ strip a.out
$ xz -c a.out | uuencode a.out.xz > a.out.xz.uu

armhfは駄目そうです.

# cat | uudecode
^d
# xzcat ./a.out.xz > ./a.out
# chmod +x ./a.out
# ./a.out
Segmentation fault

次は gcc-arm-linux-gnueabi でarmlfのバイナリを作って試すと動きました.

$ /usr/bin/arm-linux-gnueabi-gcc -static ./hello.c
$ strip a.out
$ xz -c a.out | uuencode a.out.xz > a.out.xz.uu
# cat | uudecode
^d
# xzcat ./a.out.xz > ./a.out
# chmod +x ./a.out
# ./a.out
Hello, world!
# /usr/bin/time -f "%M KB" ./a.out
Hello, world!
2144 KB

この辺りで今回は時間切れ.次回の同じような感じになりそうです.興味のある方は以下のページから.

とりあえずarmelのバイナリが動くようなのがわかったので面白そうな小さなプログラムを試そうかなと思っています.cowsayとか好きなんだけどこれはPerlなので容量的に難しそう.とりあえずfortuneあたりかな?

以前PQI Air PenでやったようにSD cardを用意してそこにDebian armlf環境を展開してchrootとかもできそうです.

鹿児島らぐの「鹿児島Linux勉強会 2020.06」に参加

2020-06-28(sun)に開催された「鹿児島Linux勉強会 2020.06」に参加しました.

今回もDiscordで開催.主に音声チャットでやり取りで発表は画面共有で行う感じです.参加者は6名(申し込み7人欠席2人飛び入り1人)でした.

以下のような話がありました.

私は先月の「YoutubeLiveを細い回線で「聴く」」の続きをと思ったのですが,スライドのアクセスがとても少なく(たぶん自分を除くと一桁)反応良くなさそうだったのと,Twitterでrsyncの新機能への反応が良かったように見えたので「rsync 3.2.0の新機能を試してみた」と,参加者少なさそうだったので急遽「cowsayのcowを増やそう」を用意しました.
まあどちらもいまいち刺さらなかったかな…….

次回は07/26(日)でオンライン開催の予定です.

小江戸らぐ 6月のオフな集まり(第215回) オンライン開催に参加

06/13(Sat) 14:00〜20:00

カンファレンスツールにはZoom.us を利用して,14:00〜18:00 が勉強会.その後は懇親会な感じです.実際は00:00過ぎまでやっていました.

参加者はだいたい20人前後な感じでした.

以下のような発表がありました.

私の発表は「Linux環境で(低解像度の)画面共有を行うTips」でした.
しかし,今発表腕紹介したXephyrを使って発表しようとしたら今回のツールのZoom.us Linux版 clientでは画面共有の一覧に出てこず利用できませんでした(あとでChromiumでZoom.usを利用したら共有できるのを確認).スライドのまま共有してもほとんどアクセスはないのでそのうちblogにでもまとめなおそうと思います.

次回は恐らく07/11(Sat)にオンライン開催です.