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カードのままとしました。また、この作業は今回は最後にやりましたが、本来は最初にやっておいたほうがトータルの構築時間は短くて済むような気がします。

Raspberry Piにつないでドップラーセンサーをテスト

LinuxMintにつないで(たぶんFT234Xのせいで)うまくいかなかった秋月のドップラーセンサーキット。こんどはRaspberry Piにつないでテストしてみました。

Raspberry Piにつないで電源投入後、SSHで接続。dialoutグループにユーザー pi がいるのを確認して、screenをインストール。おもむろに、

としてみた。
センサーに手を近づけると反応するので、何か送ってきているのだけど、附属のマニュアルとは異なり、文字化けしているように見える。うーむ。

・・・・まじめにシリアルの波形見るか・・・。

スタンドアローン出力とOctoPrint比較

Ender-3改良(?)の施策として、Thingiverseで見つけたケーブルチェーンを付けてみようと思い、OctoPrintからパーツを数個出力してみたのですが、観察していると、造形の細かいところで動作が遅くなっています。結果として、細かい関節部分の造形がイマイチで、その結果、動きもイマイチな感じでした。そこで、部品作成はOctoPrintではなく、MicroSDにGcodeデータをコピーして、スタンドアローンで出力してみました。

上の写真はスタンドアローンで出力中の写真です。こちらの方は関節部分もよりきれいに出力されました。この後、他の部品も出力して無事に組み立てはできて、非常にいい感じです。動作上も問題なさそうなので、余った部品を見比べてみました。

左の写真は、一番上がOctoPrintで出力したもの。真ん中と下がスタンドアローンで出力したものです。

材料はPLA、積層厚はどちらも0.2mm、Infillは20%(あまり関係ないですが)、ノズル温度200度、ベッド温度60度で、Curaでスライスした際の条件は同じです。(ファイル自体は数個出力か、35個出力かという違いがあります)

真ん中のものが積層割れっぽいのがあるのは置いといて、回転軸となる穴の周囲が違うのがわかりますでしょうか?

右の写真も一番上がOctoPrint、真ん中と下がスタンドアローンで出力したものです。

やはり回転軸となる穴の内側に差がみられます。この部分はOctoPrintでのプリント時にはノズルの移動速度が落ちていて、同じところにノズルが滞留する時間が長くなっています。

そのため、樹脂が余分に出てきてしまっているのか、あるいは、加わる熱量が大きくなって周囲を融かしているのかわかりませんが、影響を与えていそうな感じがします。なにか良い対策があればいいのですが・・。

NanoPi NEO2セットアップ(Armbian編)

一旦は公式ディストリビューション?であるFriendlyCoreをインストールしたのですが、できるだけオープン系ということでArmbianをインストールし直しました。

OSイメージは Armbian の NanoPi NEO2 のページから Armbiean Stretch をダウンロードしました。ダウンロードしたイメージファイルを展開して、USBイメージライタでMicroSDカードに書き込むのは同じです。

書き込んだMicroSDカードをNanoPi NEO2に挿入します。ローカルPCで

を電源投入前後で実行、増えたIPアドレスを調べます。(注:電源投入後の実行はしばらく待ってから行います)
調べたIPアドレスに対して、

として、パスワード「1234」でログインします。ログインすると、rootのパスワードの設定変更を求められ、引き続きユーザーアカウントの作成を求められますので、適当に作成します。作成完了後、そのまま、

としてアップデートとavahi-daemonのインストール、カーネルバージョンアップ後の再起動を行います。以降は

でリモートログインできます。リモートログイン後、

として、Personalの項目内の Timezone、Locale、Hostname を適当に設定しておしまいです。

NanoPi NEO2セットアップ(FriendlyCore編)

何回やってるんだという感じのNanoPi NEO2のセットアップです。

公式イメージが置いてある http://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO2#Boot_from_TF のリンク先の Google Drive のURL https://drive.google.com/drive/folders/1w7eMluHWo3ezwKBdaJcDUcCtM9qVaaVv から「nanopi-neo2_friendlycore-xenial_4.14.52_20180628.img.zip」をダウンロードしてきて、イメージを展開、USBイメージライタでMicroSDカードに書き込みます。書き込んだMicroSDカードをNanoPi NEO2に挿入します。ローカルPCで

を電源投入前後で実行、増えたIPアドレスを調べます。(注:電源投入後の実行はしばらく待ってから行います)
調べたIPアドレスに対して、

として、パスワード「pi」でログインします。

でセットアップ。パスワードの変更、ロケール(ja_JP.UTF-8)の追加、タイムゾーンの変更(Asia/Tokyo)して、再起動。
再起動後、再度 ssh でログインして、

完了すると、以降は

でログインできるようになります。(ローカル側にも avahi-daemon が必要)

Raspberry Pi 3B+ でリモートデスクトップ環境

遅まきながらRaspberry Pi 3B+を手に入れた(というか手には入っていたのですが、開封していなかった)ので、リモートデスクトップ環境として立ち上げてみました。

Raspberry Pi 3B+は初めからUSBメモリからブートできるようになっているので、今回はUSBメモリ起動とします。USBメモリには速度も速く、前モデルのUltraFit 3.0のように激熱にならないUltraFit 3.1の32GBを使うことにしました。

ケースはThingiverseにある適当な(=ヒートシンクが取付可能で空気の流れがよさそうな)ケースのデザインを探して3Dプリンタで出力、CPU(SoC)とメモリとUSBハブ兼イーサネットコントローラには適当なヒートシンクを取り付けました。

OSとしていつものようにRaspbian StretchのDesktop版をダウンロードして、Linux Mintに初めから入っているUSBイメージライタでUltraFit 3.1に書き込みます。書き込んだら、一旦取り出した後、再度取り付けて、マウントさせます。/bootディレクトリに touch コマンドで ssh という名前のファイルを作成したら、再び取り出して、今度はRaspberry Pi 3B+ に取り付けて電源投入します。

数分したら、同じサブネットに接続したLinux Mintから

として応答が帰ってくるのを待って、

として接続します。ユーザー名は pi 、パスワードは raspberry です。ログインしたら、

として設定を行います。

  • パスワードを変更
  • ロケールとして ja_JP.UTF-8を追加、デフォルトもja_JP.UTF-8に設定します。
  • タイムゾーンを Asia/Tokyo にセット
  • Wi-Fiの国設定を日本にセット

完了したら、一旦

として再起動しますが、Raspberry Pi 3B+ の場合は電源が切れてしまうようですので、一旦電源供給用のUSBケーブルを抜いて再挿入します。再起動したら、再度 ssh でログインしてから、

として、アップデートとRDPサーバーをインストールします。一方でローカルPC側は Synaptic でリモートデスクトップクライアントの remmina をインストールします。(remminaとremmina-common、remmina-plugin-rdp、remmina-plugin-xdmcpおよびその依存パッケージ)
完了したら、一旦再起動します。(必要かどうかはわかりませんが、とりあえず)

ローカル側で Remmina を起動して、上のアドレスバーに raspberrypi.local(ホスト名を変更せず、同セグメントから接続する場合)またはIPアドレスを入力し、左側の「+」を押して、プロファイルの基本設定内の「色数」をHigh ColorかTrue Colorあたりに設定して、「Save as default」をクリックします。(設定しないとエラーになります)

・・・で、そのまま「接続」を押すと何故かエラーになりますが、アドレスバーに接続先のアドレスを入れてEnterを押すと、ログイン画面が出ますが、ログインしてもその後、Raspberry Piがリブートしてしまいます。

おそらく、デスクトップ環境の何かが足りないからだろう、ということで、ssh でログイン後、

として一旦 raspi-config を起動した後、Boot optionsで起動後デスクトップ環境にオートログインするように設定してから再起動して、しばらく(10分位でしょうかね)待った後、再び Console に戻します。(「Desktop / CLI」で「Desktop Autologin」に設定後、再起動してしばらく待って、「Console」に戻す)

すると、Remmina でリモートデスクトップ接続するとGUIリモートデスクトップ環境に接続できました。(注:試行錯誤のなかで、tightvncserver をインストールしているので、ひょっとしたら必要かもしれません)

危なそうなサイトに接続する場合には有効だと思うのですが、どうでしょうかね。

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を有効化できないので・・・)

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でタイムラプス撮影(続)

NanoPi NEO2でのタイムラプス撮影ですが、前回はcronが使えないようなので、スクリプト中でsleepして周期の調節をしていました。

で、いろいろ調べていたら、systemdのtimerユニットで似たようなことが実現できるようなのでやってみました。

1.スクリプトの作成

ログイン中であればユーザー権限でtimerユニットを動作させることもできるようなのですが、今回はroot権限で動作させます。

/usr/local/bin/TimerImageとして以下のファイルをrootで作成しました。

2.サービスファイルの作成

/etc/systemd/system/TimerImage.serviceとして以下のファイルを作成しました。

3.timerを設定する

/etc/systemd/system/TimerImage.timerとして以下のファイルを作成しました。

作成後、以下のようにして起動します。

daemon-reload は設定ファイルを修正した場合に再読み込みさせる際に必要です。(=初回は必要ない)

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.接続されているか確認

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