あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

(Raspbian Stretch+)NetworkManager+一部のUSB無線LANドングルで接続できない場合の回避方法

Raspbian Stretchが出て、特に変わるところもなくいつも通りに初期セットアップして使おうとしていたんですが、無線LANは相変わらずNetworkManagerで設定していたら、自動接続できたりできなかったりすることに気づきました。NetworkManagerのセットアップはここにAnsible Playbookを置いてます。

github.com

で、調べてみると/var/log/syslogあたりでNetworkManagerが接続しようとして認証のあたりで失敗し続ける様子が見られました。ググると以下の内容に該当していました。

#842422 - network-manager: NetworkManager fails to authenticate with old 802.11bg USB devices - Debian Bug report logs
Bug #1681513 “Ubuntu 17.04/17.10: New feature in NetworkManager ...” : Bugs : network-manager package : Ubuntu

だいたいの報告例はRalinkで、私の手持ちで再現したものもすべてRalinkでした。回避方法は2つほどあるようですが、/etc/NetworkManager/NetworkManager.confに以下の設定を追記することで回避できました。

[device]
wifi.scan-rand-mac-address=no

wifi.scan-rand-mac-addressはアクセスポイントのスキャンをする時にランダムなMACアドレスに詐称して実行するオプションで、プライバシーの観点からそういう機能がついているようです。昔はwpa_supplicantの機能との組み合わせだったようですが、1.4.0からNetworkManager自身でできるようになったそうです。↓のブログを斜め読みしただけだけど。

MAC Address Spoofing in NetworkManager 1.4.0 – Thomas Haller's Blog

Rsspbianに限らず、たぶんNetworkManagerが入っていれば該当するのかもしれません。なおRaspbian StretchのNetworkManaferのバージョンは1.6.2-3でした。プライバシー的な問題を気にしなければ、回避方法のままで良いのかなあ。Wi-Fi Playbookに追加するか悩ましい。

Nintendo Switch型求人チラシでSwitchもどきをつくってみる

OSC京都は参加できなかったんですが、どうも任天堂さんがSwitch型の求人チラシを全員配布資料に入れてくれていたようですね。残部のお片付けをしていたら出てきました。

f:id:Akkiesoft:20170825103432j:plain

エンジニア募集中のようです。

f:id:Akkiesoft:20170825103437j:plain

で、仕事そっちのけで遊んでしまいました。反省していぬ。

くり抜くじゃん?

f:id:Akkiesoft:20170825103610j:plain

Raspberry Pi の公式ディスプレイに貼り付けるじゃん?

f:id:Akkiesoft:20170825103631j:plain

画面は手元にあった適当な環境なのでCLIだけど、デスクトップにしたら普通にタッチできるし、Minecraft Pi Editionでも起動しといたらもうSwitchですよね。MCPiはタッチ操作できないけど。

超がつくほどどうでもいい小ネタでした。なお、ホンモノのSwitch購入予定はないです。

Software Design 2017年9月号にまたEjectの記事を書かせていただきました

ちょい前にしれっと書いていたりもしましたが、本日発売のSoftware Design 2017年9月号にまたEjectで書かせていただきました。良いのか本当に……??

今回はACリモートをより簡単に作れるようにした自称スマートコンセントを作成して、USB扇風機を回して遊びます。リモート制御にはmikutterを採用して、mikutterプラグインを作成することでTwitterから制御できるようにしました。実質mikutterプラグイン入門記事ですね?

どうぞよろしくお願いいたします。

あと、Ejectの薄くない本ことEJECTOについてですが、COMIC ZINでの委託販売が近々始まる予定です。また、私の方でもBOOTHでの通販を期間限定で行う予定なので、遠方のかたはお見逃しなく〜。

金魚を買い始めて1年が経っていた

あっという間ですね。しかしハムスターより長く生きる可能性もあるのでまだまだ先は長いかもしれない。

去年の日記を見て……ファッ!?

akkiesoft.hatenablog.jp

f:id:Akkiesoft:20160820122933j:plain

こいつはもうギリギリ姉金のサイズっぽい気がする

↓↓現在↓↓

f:id:Akkiesoft:20170816215335j:plain

水槽でかくしちゃった……。水深は今のところ前の水槽を踏襲。いやいや、でかくなったねぇ!!

エサを粒タイプに変えてから成長が加速したような気がしていて、ヤベえ……金魚ヤベえ……って言ってます。

相変わらずこのへんで観察やってますのでどうぞ。

金魚カメラ

Raspbian2017-05以降のイメージはddコマンドで書き込む時に追加のオプションが必要

Raspbianでaptコマンドを実行したらメタデータがぶっ壊れていると言う現象に出くわして、エッなんでってなった話。

もろもろ調べて回ったら、どうもRaspbian2017-05以降(私が出くわした一番古いバージョンがこれだった)のイメージではイメージの作りが変わったらしく、ddコマンドでSDカードに書き込むときにオプションが必要になったようです。国内外ですでに報告が上がっていました。

具体的にはpython3とかqt回りのパッケージでリストファイルが破損していて、何かしらパッケージを入れようとした時に初めて気づくというものです。

解決方法として、データが壊れたパッケージをインストールし直すと言う荒治療もあるようですが、他のファイルが壊れていないとも限らないのでイマイチです。正しい解決法は最後のリンクのブログにあるとおり、ddコマンドにconv=(f)syncオプションを足す方法です。公式ドキュメントにも記述されています。

オフィシャルなインストール方法の解説 INSTALLING OPERATING SYSTEM IMAGES ON MAC OS にも、conv=syncを付けるように書かれている。

はて? 昔は、そんな記載なかったような気がするのだが……

そり!!そんなオプションおじさんは知らんぞ!

ドキュメントのページはGitHubで管理されており、変更履歴を見てみると1ヶ月前にしれっと更新されていました。もしかしたらどこかリリースのタイミングで書かれていたのを見落としていたのかもしれませんが、気づかんわこれ。

installing-images: dd - use conv=fsync and conv=sync for Linux and Ma… · raspberrypi/documentation@4dbfa35 · GitHub

よって、上記変更履歴より、Linuxの場合はconv=fsync

$ sudo dd bs=4M if=2017-07-05-raspbian-jessie.img of=/dev/sdX conv=fsync

Macの場合はconv=sync

$ sudo dd bs=1m if=2017-07-05-raspbian-jessie.img of=/dev/rdiskX conv=sync

と言うオプションが新たに必要になるようです。

Man page of DD いわく、fsyncは「終了前に出力ファイルデータを物理的に書き込み、メタデータに対しても使用する」となるようですがわからん。

で、この件があまり言われていないのは、NOOBSではそのへんの対応もなされているであろう(試してないけど)可能性、もしくは最近だとEtcherと言うイケてるGUIツールが登場したのでこれが使われている可能性が考えられます。みんな最近ナニでイメージ書き込んでます?

というわけで気をつけてね〜って話でした。

ちなみに私はpimoroniパッケージを入れようとしてこの件に気づきました。pimoroniパッケージはPimoroni製品のドライバー類を簡単にインストールできる便利ツールなのでこちらもぜひ覚えてください(ドサクサ)。