普通にはadbで認識できないAndroid機を認識させる

通常のAndroid機は /etc/udev/rules-d/51-android.rules にベンダIDを追加してやるとadbで操作できるようになるのですが、coviaのFLEAZ F4s/F4s+は認識することができません。いろいろ試してみたところ、わかってきたことをメモしておきます。環境は LinuxMint18 MATE edition 64bit です。

まずはUSBのデバイスIDを調べます。(必要なもの以外は結果から削除しています)

$ lsusb
Bus 001 Device 016: ID 0a5c:e688 Broadcom Corp.

BroadcomのチップのベンダIDそのままのようです。(これはF4sのもの。F4s+はデバイスIDはe681になるようです)
とりあえず、/etc/udev/rules-d/51-android.rules にベンダIDを記載して再読み込みさせてみます。

$ cat /etc/udev/rules.d/51-android.rules 
SUBSYSTEM=="usb", ATTR{idVendor}=="05ac", MODE="0666", GROUP="plugdev"
$ sudo udevadm control -R

この状態で、USBを抜き差ししてから adb コマンドを叩いてみても、

$ adb devices
List of devices attached

となって、デバイスが見つかりません。
いろいろググると、~/.android/adb_usb.ini にベンダIDを書くとよい、というような記載をいくつか見つけたので試してみます。

$ cat .android/adb_usb.ini 
0x0a5c

$ sudo service udev restart
$ adb kill-server
$ adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
???????????? no permissions

状況が変わりました。この状態で TCP/IP 接続でデバッグする設定にしてみます。

$ adb tcpip 5555
error: insufficient permissions for device

パーミッションで蹴られてしまいました。ルート権限で試してみます。

$ sudo adb kill-server
$ sudo adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
$ adb devices
List of devices attached 
F4Sxxxxxxxxx unauthorized

$ sudo adb tcpip 5555
error: device unauthorized. Please check the confirmation dialog on your device.

端末上にデバッグ接続可否のダイアログが出ていたので、許可してみます。

$ adb tcpip 5555
restarting in TCP mode port: 5555
$ adb install xxxxxxx.apk
2460 KB/s (261419 bytes in 0.103s)
 pkg: /data/local/tmp/xxxxxxx.apk
Success

となって無事にインストールできました。

改めて /etc/udev/rules-d/51-android.rules を削除してやってみました。
どうも、/etc/udev/rules-d/51-android.rules は必要ないようです。
一般ユーザー権限では、

$ adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
???????????? no permissions

となってパーミッションエラーになりますが、通常の Android機はルート権限で adb server を起動すると認識できるようです。

$ sudo adb kill-server
$ sudo adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
$ sudo adb tcpip 5555
restarting in TCP mode port: 5555

さらに、今回の covia FLEAZ F4s/F4s+ のようになにもしないと認識しない機種でも、 ~/.android/adb_usb.ini にベンダIDを書いてやれば認識できるようです。

$ echo "0x0a5c" > ~/.android/adb_usb.ini
$ cat ~/.android/adb_usb.ini 
0x0a5c
B ~ $ adb devices
List of devices attached

$ sudo adb kill-server
$ sudo adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
$ adb devices
List of devices attached 
F4Pxxxxxxxxx device

$ sudo adb tcpip 5555
restarting in TCP mode port: 5555

ここで F4s+ を外して F4s を接続してみます。

$ adb devices
List of devices attached 
F4Sxxxxxxxxx device

$ sudo adb tcpip 5555
restarting in TCP mode port: 5555

となり、無事に認識しました。

FreeCADを使ってみた

Wings 3Dに引き続き3Dデータの作成に挑戦するため、やはりSynapticでLinuxMint 18 x64の環境にインストールできるFreeCADを試してみました。

試行錯誤しながら動かしていたのですが、自分のように他の人が3DCADを使っているところを見たことがあれば、こちらの紹介記事をみながら何とか使えそうな感じです。操作で最もわからなかったのが、視点の変更。平行移動がマウスの中ボタン(スクロールホイール)を押しながらマウス移動、回転させるのが中ボタン+左ボダンを押しながらマウス移動ということです。

で、あれこれしながら作ってみたデータはこんな感じ。

sample1

何かの基板を入れるようなケースを意図して作ってみたのがこんな感じ。

sample2

データ作成にあたっては、各オブジェクトの位置(穴や凹みは引き算で作ってますので、引くためのオブジェクトも含む)の座標や大きさなどを数値で打ち込んで行くイメージになりそうな感じです。なので、ラフスケッチのイメージを作っておいてから作業着手するのが良さそうです。3Dプリンタで簡単なものを作ったり、KiCAD用の3Dモデルを作る程度であれば、自分でも何とか使えそうです。(KiCADに持っていく方法やピンを作る方法は別途考えないといけないですが・・・)

他に少し古いバージョンを対象に書かれているようですが、こちらのサイトも参考になりそうです。

Wings3Dを使ってみた

久しぶりにKiCADを使って設計をしているのですが、出来上がりのイメージを高めるwには、やはりライブラリに3Dデータが欲しくなります。

で、無料で3Dプリンタ用データを作れるフリー3Dソフト一覧というページを参考にしてLinuxで使えるツールの中から、SynapticでインストールできるWings 3Dを試してみました。

オープンソースであることと、UIがシンプルで初めての人にも使いやすい、ということが特徴のようです。

で、早速Synapticからインストールして試してみました。

Wings3D

基本の図形を並べて変形させていくような感じの操作方法で、精密なデータを作るのは多少しんどいかもしれないのですが、作ったデータはKiCADで使うデータは基板製造用のガーバーデータには関係ないですし、雰囲気がわかればいいのでまずまずの印象でした。

・・・が、本番のデータ作成にトライしてみようと、そこまで試しに作成してみた形状を保存しておこうとしたところ、

Wings3DError

となって保存できませんorz。

うーむ・・・。

 

AndroidタブレットをLinuxのサブディスプレイにする

外出時にノートPCで作業していると、1366×768の画面ではどうしても狭く感じます。・・・で、ぐぐってみたところ、AndroidをLinuxのサブディスプレイにする方法がある模様。どうやらVNCを使うようなので、やってみました。

環境は以下の通り。

  • サーバ側はLinutMint18 x64
  • クライアント側はNexus7(2012) + Android4.4.4

です。

作業にあたってはこちらのサイトを参考にさせていただきました。

1.Linux側(サーバ側)

Synapticでvnc4serverをインストールします。vnc4serverを使うのはSynapticにあるからです。

インストールしたらVNCサーバを起動します。

$ vncserver :1
You will require a password to access your desktops.
Password: ********
Verify: ********

起動したら接続用のパスワードを設定します。パスワードは8文字までで、8文字を超える長さの場合には最初の8文字が使われるようです。

2.クライアント側(Android側)

クライアント側はGoogle PlayストアでVNC viewerをインストール。

起動したら、接続先として「Linux側のIPアドレス:5901」、接続名を適当な名前を設定します。接続するとパスワードを聞かれるので、vncserverを起動する際に設定したパスワードを入力します。ポート番号の5901は5900に:1の1を足して5901となっています。

3.x2vncのインストール

Synapticでx2vncをインストールする。インストールしたら以下のようにして起動する。

$ x2vnc -shared -west localhost:1
x2vnc: VNC server supports protocol version 3.8 (viewer 3.3)
Password: ********

x2vnc: VNC authentication succeeded
x2vnc: Desktop name "(ホスト名):1 (ユーザー名)"
x2vnc: Connected to VNC server, using protocol version 3.3
x2vnc: VNC server default format:
screen[0] pos=1003
Xinerama detected, x2vnc will use screen 1.
x2vnc: pointer multiplier: 0.930491

として起動します。この状態でマウスは行き来できるようになっています。
が、ウインドウは行き来できません。ウインドウマネージャがいないような雰囲気です。しかし、サブディスプレイ側(Android側)ではコンソールウインドウが開いているので、そこでfirefoxを起動するとサブディスプレイ側にブラウザを開くことができました。とりあえずWebを参考にしながら何か作業したり、viやxedで設定ファイルを編集したりする分には十分です。

ここで一旦終了させます。

$ killall x2vnc
$ vncserver -kill :1

VNCのパスワードを変更します。

$ vncpasswd
Password: ********
Verify: ********

4.まとめ

インストールが完了したら、以下の手順で起動できます。

$ vncserver :1 -depth 15 -geometry 1280x800 -alwaysshared
$ x2vnc -shared -west localhost:1

画面サイズはNexus7(2012)の画面サイズです。Android側でフルスクリーンにしておけばちょうどよくなります。

IMG_20160809

サブディスプレイとして使っている様子はこんな感じです。USBケーブルは電源供給専用で、接続はモバイルルータ経由です。

Raspberry Pi3でネットワークブートなどが可能に?

まだ正式版ではないようですが、Raspberry Pi3でUSBメモリやネットワークからのブートが可能になるようです。

リンク先によると、USBマスストレージとして起動するデバイスブート、USBホストとして起動するホストブート、マスストレージデバイスから起動するマスストレージブート、イーサネットから起動するネットワークブートが選べるようです。

ブートシーケンスの資料によると、GPIOで起動モードを設定すると、CPUに内蔵のワンタイム(OTP=One Time Programmable)ROMから起動して、更にどのデバイスから起動するかの設定をGPIOから読み込むようです。

ネットワークブートは設定がちょっと面倒な感じだけど、一度設定してしまえばクライアント側の劣化部分(要はSDカード)がほとんどなくなるのでちょっと便利かもしれない。設定方法はたぶんここ(最初のリンクの中にある)でしょうか?
でも、Raspberry PiのEthernetはUSB越しなので、USB抜き差しで不安定になることがあるような感じなので、用途はかなり限られる気がしますが、大量のRaspberryPiのルートファイルシステムをあれこれしながら動かす用途であれば便利かも・・・ですね。クラスタとかなにかの観測ネットワークとかかな?

自分は・・・たぶんやらないだろうなぁ・・・。

miredoでIPv6を使ってみる

NATではないIPアドレスが欲しいのだけど、V4は無理・・・なので、トンネル越しのIPv6を試してみた。

といっても、LinuxMint18では非常に簡単で、SynapticでToredoのLinux実装らしいmiredoをインストールすると、ifconfigでteredoというデバイスが増えてIPv6が使えるようだ。

・・・が、再起動するといなくなっている。

$ sudo service miredo start

とすると復活するのだが。

調べてみると、起動中に “teredo-debian.remlab.net” というホスト名を解決できないために起きる既知の問題の模様。

まさかのARM買収

ニュースを見ていたら、驚きの記事が出てました。

ソフトバンクがARMを3兆3千億円(240億ポンド)で買収だそうです。
なんか色々売って現金の調達に走ってるな〜、今度は何に投資するのかな〜?とか思ってはいたのですが、ARMとはびっくりです。

秋月の新商品がおかしい・・・

今日発見した秋月電子の新商品・・・

Screenshot-2

どういう経緯で彼岸花の球根を電子パーツショップが扱うようになったのだろう・・・・?

Screenshot-3

「植物ですので大きさや色味はバラツキがあります」・・・・って、そりゃそうだけど、何故秋月に球根??よりによって彼岸花!?

しかも在庫が「AAA」ってどんだけ在庫してるんだろう??

ESP8285が登場!?

例によってHack a Dayの記事から。

EspressifからESP8266の後継チップが登場しているようです。その名もESP8285。データシートによると、一言で言えば、ESP8266では外付けだったSPI Flash(8Mbit)が内蔵になっていて、より小さなモジュールが作れる、というところでしょう。

公式かどうかわかりませんが、開発用のボードもすでにあるようです。

Hack a Dayの記事には小さな小さなモジュールの写真が載っています。小さいことだけはわかるのですが、1元硬貨との比較ではサイズがよくわかりません。やっぱり比較は25セント硬貨とじゃないと・・・。
で、1元硬貨のサイズは直径25mmで、500円硬貨は直径26.5mmなので、ほぼ500円硬貨くらいのようです。となると、モジュールのサイズは9mm角くらいでしょうか。アンテナがないので、アンテナ付きだともう少し大きくなるでしょうが。

Windows7のMBRを復旧させる

lenovoのノートPCをWindows7とUbuntu17.1のデュアルブート(増設したmSATAのSSDにUbuntuをインストール)で使っているのですが、そろそろWindows10へのアップグレードをやるか、ということでアップグレードをトライ・・・してみたものの、うまく行きません。

そこで、mSATAのSSDを外してみたものの、grubのコマンドプロンプトが出るばかりでWindows7が起動しなくなってしまいました。

・・・・で、ぐぐってみたところ、MBRの書き戻し(修復)が必要な模様。

検索すると出てくるのは

  1. Windowsの起動ディスクやリカバリディスクで起動して、bootrecコマンドで修復する
  2. UbuntuのライブDVDで起動して、ms-sysコマンドで互換MBRを書き込む

という方法でした。

前者はディスク探すのが面倒、後者はわざわざライブDVD(USBでもいいんだろうけど)作るのが面倒だなぁ、と思ってどうしたものかと考えていたところ、

SystemRescueCDに含まれてんじゃない?

と思ってSystemRescueCDで起動してみたら、案の定ありました。

$ ms-sys -7 /dev/sda

で復旧完了。Windows7で起動してくれるようになりました。
真似するときは、ちゃんとms-sysのドキュメントを読んでくださいね。

<追伸>
無事にWindows10へのアップグレードも成功しました\(^o^)/