Rock64をWiFi-APとしてもセットアップしてみました

hostapdを使って、WiFi-APとしてセットアップしました。

・・・が、なんのことはない、armbian-configの中に hotspot のメニューがあるので、それに従って設定するだけです。SSIDとパスワードはセットアップ後に /etc/hostapd.conf にて設定すれば完了です。
デフォルトでは AP としてのIPアドレスは172.24.1.1、DHCPで振られるIPは172.24.1.0/24のようです。

ROCK64リモートデスクトップ環境

1年位前に買ったROCK64 4GBにArmbian Ubuntu18.04を入れてみました。別の端末からリモートデスクトップで接続できる環境が容易に構築できました。RAMが4GBあるので、目的によっては非常に便利に使えそうです。

1.Armbian Bionic for ROCK64のダウンロードとMicroSDへの書き込み

Armbianからダウンロードします。MicroSDへの書き込みはいつものようにディスクイメージライタで行いました。

2.初回電源投入

MicroSDを取り付け、LANに接続します。
接続先のIPアドレス確認のため電源投入の前に、fping でセグメント内で現在使われているIPアドレスを確認します。

ROCK64の電源を投入し、しばらく待って、再度fpingコマンドを実行、差分のところがROCK64のIPアドレスなので、そのアドレスに対して

としてログインします。初期パスワードは 1234 です。

※どうも、avahi-daemonが初めから動いているっぽいので、

で行けそうな気がします。

ログインに成功すると、現在のパスワード、新しいパスワードを確認してくるので入力します。
さらに、通常ユーザーの作成に移るので、適当に通常ユーザーを作成します。

一旦ログアウトして、再度作成したユーザーでログインし直します。

3.初期設定

で適当に初期設定を行います。

Systemの項目から以下のソフトウェアをインストールします。

  • Minimal Desktop
  • Default(ブラウザその他のインストール)
  • Lightdm(ログインマネージャ)

引き続きPersonalの項目から以下の項目を設定します。

  • TimezoneをAsia/Tokyoに設定
  • Languageはja_JP(UTF-8)

さらに、Softwareの項目からRDPを設定します。

4.リモートデスクトップクライアントから接続する

設定が終わると、別のマシンから Remmina(RDPクライアント)で接続するとリモートアクセスが可能となっています。すでに部分的ですが日本語化もされています。

「アプリケーション」⇒「Settings」⇒「言語サポート」で言語の設定を行いますが、この状態では英語のみインストールされていますので、「言語のインストールと削除」から日本語にチェックを入れて適用、キーボード入力に使うIMシステムにfcitxを選択します。その後、メニューとウインドウの言語で日本語を一番上に持ってきてから、「システム全体に適用」をクリックします。

地域フォーマットも同様に日本語を選択し、システム全体に適用します。

一旦ログアウトして、再度ログインして概ね完了です。
初めから Chromium ブラウザも入っているので、

5.ルートファイルシステムをUSBメモリに移動する

USBメモリを挿入した状態でarmbian-configを起動して、System settings で Install(Install on SATA, eMMC, NAND or USB)を選択、Boot from SDを実行すると、USBメモリにルートファイルシステムを移動してくれます。(実行する際にUSBメモリのパーティションを削除しておくと、自動でパーティション作成ツールが起動します)

USBメモリはこの記事で使ったSandisk UltraFit 3.1を使いましたが、システム移動後に

として1GBのファイルを作成してみたところ、所要時間は約10秒、107MB/sの速度が出ました。
まだ挙動がよくわからないところもありますが、速度面でも優位なのではないかと思います。

※Boot from SPIを実行するとSPIフラッシュにブートローダを書き込んで、SDカード無しで起動できるようになるのだと思いますが、戻し方を確認していないのでとりあえずbootはSDカードのままとしました。また、この作業は今回は最後にやりましたが、本来は最初にやっておいたほうがトータルの構築時間は短くて済むような気がします。

古いネットブックにKali Linuxをインストール

2代前の持ち出しPCのネットブック(IdeaPad S10-2、Atom N270、メモリを2GBに増設、HDDをSSD64GBに換装済み)にKali Linuxの32bit版をインストールしてみました。

グラフィカルインストーラは重いので、テキストインストーラを起動します。

途中、WiFiチップのドライバのregulatory.db b43/ucode15.fwなどが見つからない、というメッセージが出ますが、ここではそのまま放置して、有線LANを接続しておきます。

上記コマンドはすごく実行時間がかかりました。ホストしているサーバーまでの帯域が細いようで、ダウンロードも長いのですが、非力な初期のAtomでは非常に時間がかかります。で、なんだかんだ言いつつ、途中lightdmを選択し導入。
再起動し、ログイン画面でxfceを選択してログインします。ログインし直すと、軽くなってそれなりに操作できるようになりました。

BCM4311ドライバのインストール

このネットブックはWiFiチップとしてBCM4311が載っていて、Debian系をインストールするとドライバが入りません。Debianのページを見ると、non-freeのファームウェアは別途インストールする必要があるようで、主要な non-free のファームウェアを集めたアーカイブファイルへのリンクがあります。この中から、firmware-b43-installer_019-3_all.deb をダウンロードしておき、USBメモリで Kali linux 側に持っていって、

とすると、ファームウェアをダウンロード(これがまた時間がかかります。15KB/sくらいしか出ません。)

いろいろアップデート

これが終わったところで、ようやくいろいろアップデートかけます。

・・・1GBダウンロードだそうで、丸1日くらいかかりそうです。性能が非力かどうかよりも、回線側の問題ですね・・。

<追伸>実際はそこまでかかりませんでしたが、UbuntuやLinuxMintに比べるとやはり時間がかかってしまいますね。

Raspbianをダウンロードしようとしたら・・・

公式サイトのダウンロードページから RASPBIAN STRETCH LITE のTorrentのリンクをクリックしたところ・・・

ということで、負荷がいっぱいなので・・・ということで .torrent ファイルすらダウンロードできず。でも負荷を軽くするための torrent だと思うのですが、torrentでダウンロードするための .torrent がダウンロードできなかったら余計にサーバーに負荷が集中するような気がします。

幸い、ミラーサイトが国内にありましたので、そちらからダウンロードしましたが・・・。

http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/

で、ZIPファイル展開して、USBイメージライタでイメージを書き込んで、初めからSSHを有効化するために bootパーディション直下に ssh という名前で空ファイルを作ってから起動しました。(/boot/ssh ファイルを作らないと、一度ディスプレイ+キーボードを繋ぐか、シリアルコンソールを繋がないとSSHを有効化できないので・・・)

Windows10からLinuxMint上のHL2240Dに印刷する

自宅の環境の整理をしているのですが、これまで不便だったのがWindows10からプリンタ(ブラザーのHL2240D)に印刷する時でした。正直、なぜLAN内蔵モデルにしなかったんだろう、というのがこれまでの悩みでした。

が、今回、Windows10からLinuxMintに接続したHL2240DにLAN経由で印刷することができるようになりましたので、メモしておきます。

1.LinuxMint側で印刷できるようにする

これは以前の記事のブラザーのレーザープリンタ買いましたを見て下さい。インストールしたら、「システム管理」→「プリンタ」でHL2240Dを「共有する」にチェックを入れておきます。

2.名前解決できるようにする

LinuxMintのマシンはDHCPでアドレス設定しているので、名前解決できる必要があります。で、簡単なのはavahi(mDNS)なので、そちらの準備をします。
Linux側はavahi daemon(Mintは初めから入っているような気がする)を入れておきます。Windows側は、Appleのサイトから「Bonjour Print Services (Windows)」をダウンロードしてインストールして、Windowsファイアウォールで 5353/UDP を許可しておきます。インストールしたら、Windows10のコマンドプロンプト/Linuxのシェルから「ping 相手のホスト名.local」で応答が返ってくるのを確認します。

3.プリンタの追加

「Bonjour Print Services (Windows)」をインストールした時に追加された「Bonjour プリンターウィザード」を起動すると、勝手にLinuxMint上のプリンタを見つけてくれました。ウィザードに沿って操作していくのですが、Brotherのドライバが同名でたくさんあってよくわかりません。とりあえず、「Brother Laser Type2 Class Driver」の中の一番下のをインストールして、テスト印刷したらうまくテスト印刷できました。印刷結果ではドライバーの種類が「Type 4 – ユーザーモード」となっていました(よくわかりませんが)。

Raspberry Piをネットワークの試験に使う

ここのところ買い集めている小さなLinuxボードは結局はネットワークの試験のために購入したもので、元々はなるべく小さなtcpdumpが使えて動かしっぱなしで放置できるものを探していたものです。で、いろいろぐぐっていたら、linuxでEthernetインタフェースが2つある環境を使って、もっといろいろできることがわかってきました。具体的には、ブリッジとして動作させてた上で、遅延を挿入したりできるというものです。その環境もRaspberry PiにUSBイーサネットアダプタを追加してやれば、Raspberry Piでもできそうなことがわかったので、試してみました。

1.Raspbianのインストール

今回はGUIは不要なので、Raspbian Liteを適当なMicro SDに書き込んで、余っていたRaspberry Pi model B+に入れました。
起動して、User/Passwd=pi/raspberryでログインしたあと、コンソールから

として再起動。再起動後、linuxマシン側から

としてsshでログイン、以降はリモートログインで作業します。リモートログインしたら、

として、初期設定をします。今回は、

  • パスワード設定
  • ホスト名をraspinetに変更
  • ブートオプションをConsoleに設定
  • ローカライゼーションでLocaleにja_JP.UTF-8 UTF-8を追加、デフォルトはen_GB.UTF-8のまま。タイムゾーンはAsia/Tokyoを選択。
  • Advanced OptionでExpand Filesystemを選択、Memory Spiltは16MBに設定

で、設定後に再度、再起動。再起動後、Linuxマシン側から

として再度ログインします。ログインしたら、

として、アップデートを一通りかけた後、bridge-utilsとtcpdumpをインストールします。

2.スクリプトファイルを作成して起動時に実行させる

として、ブリッジを起動する以下の内容のスクリプトを作成しました。(実行タイミングをsleepで調整しているのでちょっと汚いですが・・・)

IPv6は今回禁止、IGMP snooping も禁止しました。作成後に、

pi@raspinet:~ $ sudo chmod a+x /usr/local/bin/start-bridge

として、実行権限を付与。起動時に実行させるため、/etc/rc.local を修正して、最後の exit 0 の前に以下の部分を追加しました。

これで、Raspberry Piを起動させると自動的にブリッジとして動作するようになります。

3.tcpdumpで通過パケットをモニタしてみる

Linuxホスト側から

でブリッジに設定したRaspberry Piにログインします。その後、

とか、

で通過するパケットをモニタします。(後ろの方の長いのは vbr0 のIPアドレスを抽出しているだけです)
ポートやIPアドレスでRaspberry Piに接続しているsshのパケットを除外しています。除外しないと、表示した文字列をパケットキャプチャして、それを再度表示してしまいます。

4.参考情報

NanoPi NEO2のUbuntu CoreでWiFi有効化

NanoPi NEO2 の Ubuntu Core で WiFi を有効化したので、その際のメモです。

使用可能なUSBアダプタは

  • RTL8188CUS 802.11n WLAN Adapter
  • RT2070 Wireless Adapter
  • RT2870/RT3070 Wireless Adapter
  • RTL8192CU Wireless Adapter
  • NetGear, Inc. WG111v3 54 Mbps Wireless [realtek RTL8187B]

ということらしいですが、きっと Raspberry Pi で動作可能なものは動くのでしょう^^;

USBコネクタにWiFiアダプタは挿しておきます。

 

1.使用可能なデバイスのリストアップ

という感じで、wlxに続いてMACアドレスという形でデバイスが表示されました。

2.WiFi起動

$ sudo nmcli r wifi on

3.アクセスポイントのスキャン

という感じでグラフィカルに表示されます。

4.アクセスポイントに接続

5.接続されているか確認

という感じで無事に接続。再起動しても大丈夫です。

NanoPi NEO2のNASキットを動かしてみました

秋月で NanoPi NEO/NEO2 用のNASキットが売っていたので、買ってみました。

秋月の説明書きにはヒートシンクが同梱されているとは書いてない(写真には写っていますが・・・)ので、思わずヒートシンクも余計に買ってしまいましたが、これから買う方はキットにヒートシンクが同梱されているので気をつけて下さい。

このNASキット以外に、

  • NanoPi-NEO2 (または NanoPi-NEO)
  • 2.5インチのHDDまたはSDD(まずは余り物の160GBをつけてみました)
  • CR2032コイン型リチウム電池
  • 起動用のMicroSDカード(手持ちの16GBを使いました)
  • 12VのACアダプタ(秋月で標準的なDCプラグがついているもの)

の準備が必要です。

組み立てにあたっては、

  • ハンダゴテ一式(NanoPi-NEO2の端子はハンダ付けが必要)
  • プラスドライバ(たぶん+1のもの)

も必要です。

とりあえず、端子をハンダ付けしました。ランド径が小さいので、ハンダ付けしにくいです。

この状態で、別のNanoPi-NEO2 から持ってきた MicroSD カードを挿して Ubuntu-Core で起動して ssh でログイン、適当に /dev/sda1 を mount してやると、中身を見ることができましたので、動作は問題ないようです。

ヒートシンクを付けてみました。

この後、Official ROMのイメージを

https://www.mediafire.com/folder/ah4i6w029912b/NanoPi-NEO2

の下の Official ROMs から nanopi-neo2_debian-nas-jessie_4.11.2_20171103.img.zip をダウンロードして、これを展開、USBイメージライタでMicroSDに書き込んで電源投入します。

ブラウザで、 http://friendlyelec.local/ にアクセスすると、

として画面が出ました。

ユーザー名: admin
パスワード: openmediavault

でログインすることができました。

とりあえず、

  • Web管理者パスワードの設定
  • タイムゾーンの設定、NTPの有効化
  • ホスト名を NanoPi-NAS に変更
  • アップデートの確認&インストール
  • ディスクのワイプ、ファイルシステム作成
  • ユーザーの作成

をしてみました。

この後、プラグインを見てみると、「openmediavault-flashmemory」というのがあり、これを使うと MicroSD への書き込みを減らせるようです。・・・が、インストールを試みたところエラーになりました・・・。

あと、デフォルトで root での ssh ログインが有効になっています

$ ssh root@nanopi-nas.local (変更していない場合はfriendlyelec.local)
root@nanopi-nas.local’s password: (デフォルトパスワードは fa )
root@nanopi-nas:~# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@nanopi-nas:~# passwd pi
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@nanopi-nas:~# passwd fa
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@nanopi-nas:~#

として、ログインパスワードは変更しておく必要があります。(もしくは、SSHを無効化したほうがよいかも)

・・・と思ったのですが、/etc/ssh/sshd_config の AllowGroups の項目には root と ssh しかいないので、実際にログインできるのは root だけのようです。

ESP32でNTP Clientを動かしてみた

一昨日のESP-WROOM-32(ESP32)をArduino IDEで動かしてみた続きです。

Arduino IDEにはWiFi関連のサンプルプログラムがあるので、動かしてみました。

「ファイル」⇒「スケッチ例」⇒「あらゆるボードのスケッチ例」⇒「WiFi」の下にいくつかサンプルが有りますが、こちらはESP32環境ではビルドできませんでした。Espressif社提供のライブラリとArduino IDEに初めから付いているWiFiライブラリでは完全に互換ではないようです。(確か、バージョン情報を取得するようなライブラリでコケてたような気がします)

「ファイル」⇒「スケッチ例」⇒「ESP32 Dev Module用のスケッチ例」⇒「WiFi」の下の「WiFiIPv6」というのを開いてみると、NTPクライアントプログラムのように見えますので、これを動かしてみることにします。
スケッチ例を開いて、冒頭にある

の部分にSSIDとパスワードをセットして名前を付けて保存、シリアルポートを /dev/ttyUSB* に設定した後、シリアルモニタを起動して、次に基板上のタクトスイッチを押しながら、「マイコンボードに書き込む」としてやると、ビルドと書き込みが行われます。タクトスイッチは「Writing at 0x00010000… (5 %) 」という表示が出たところで離してもOK。

書き込みが終わると、ESP-WROOM-32モジュールは勝手にリブートして起動します。

 

シリアルモニタ側には IPv6 でのステーションとしての動作、アクセスポイントとしての動作状況の表示、IPv4のステーションとしての動作状況が表示され、IPv4のIPアドレス取得ができると、その後NTPクライアントが動作している状況が表示されました。

また、同時にアクセスポイントとしても動作しているので、スマートフォンのWiFiアナライザなどのツールでみると「esp32-v6」というSSIDでのアクセスポイント動作が確認できました。