趣味の電子工作などの記録。時にLinuxへ行ったり、ガジェットに浮気したりするので、なかなかまとまらない。
RSS icon
  • NanoPi NEO2でタイムラプス撮影(続)

    投稿日 2018年 1月 8日 コメントはありません

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

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

    1.スクリプトの作成

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

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

    #!/bin/sh
    DATE=$(date +"%Y%m%d%H%M%S")
    fswebcam --quiet --jpeg 80 --timestamp "%Y-%m-%d %H:%M:%S (%Z)" -r 800x600 /DATA/TimerImage/pictures/$DATE.jpg
    (/DATAはHDDをマウントしてあるディレクトリです)
    作成したら、実行権限を付与しておきます。

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

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

    [Unit]
    Description=Time Lapse Capture
    
    [Service]
    Type=simple
    ExecStart=/usr/local/bin/TimerImage

    3.timerを設定する

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

    [Unit]
    Description= Capture every 10 seconds
    
    [Timer]
    AccuracySec=1sec
    OnCalendar=*-*-* *:*:00/10
    Unit=TimerImage.service
    
    [Install]
    WantedBy=multi-user.target

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

     $ sudo systemctl daemon-reload
     $ sudo systemctl start TimerImage.timer
     $ sudo systemctl enable TimerImage.timer

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

    4.動作状態を確認する

    以下のようにして動作状態を確認することができます。再起動しても自動的に起動することも確認できました。

    $ systemctl --system --all list-timers
    NEXT                         LEFT         LAST                         PASSED    UNIT                         ACTIVATES
    Mon 2018-01-08 18:58:40 JST  8s left      Mon 2018-01-08 18:58:30 JST  1s ago    TimerImage.timer             TimerImage.service
    Mon 2018-01-08 20:08:31 JST  1h 9min left Sun 2018-01-07 20:08:31 JST  22h ago   systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.servi
    Tue 2018-01-09 06:36:24 JST  11h left     Mon 2018-01-08 06:47:50 JST  12h ago   apt-daily-upgrade.timer      apt-daily-upgrade.service
    Tue 2018-01-09 07:37:17 JST  12h left     Mon 2018-01-08 18:28:22 JST  30min ago apt-daily.timer              apt-daily.service

     


  • NanoPi NEO2のUbuntu CoreでWiFi有効化

    投稿日 2017年 11月 29日 コメントはありません

    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.使用可能なデバイスのリストアップ

    $ sudo nmcli dev
    DEVICE           TYPE      STATE          CONNECTION 
    eth0             ethernet  connected      Wired connection 1 
    wlx106f3fxxxxxx  wifi      disconnected   -- 
    lo               loopback  unmanaged      --

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

    2.WiFi起動

    $ sudo nmcli r wifi on

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

    $ sudo nmcli dev wifi
    *   SSID             MODE   CHAN  RATE       SIGNAL  BARS    SECURITY 
        xxxxxxxxxxxxxxx  Infra  2     54 Mbit/s  100     ▂▄▆█  WPA1 WPA2 
        Mxxxxxxxx        Infra  11    54 Mbit/s  100     ▂▄▆█  WPA1 WPA2 
        axxxxxxxxxxx     Infra  11    54 Mbit/s  100     ▂▄▆█  WPA1 WPA2 
        Gxxxxxxxx        Infra  5     54 Mbit/s  82      ▂▄▆█  WPA1 WPA2 
        Nxxxxxxxx        Infra  5     54 Mbit/s  82      ▂▄▆█  WPA1 WPA2 
        sxxxxxxxxxxx     Infra  8     54 Mbit/s  52      ▂▄__   WPA1 WPA2 
        Bxxxxxxxxxxxxx   Infra  1     54 Mbit/s  42      ▂▄__   WPA2 
        axxxxxxxxxxxxxx  Infra  8     54 Mbit/s  22      ▂___    WEP 
        axxxxxxxxxxxxx   Infra  11    54 Mbit/s  22      ▂___    WPA1 WPA2

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

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

    $ sudo nmcli dev wifi connect " (SSID) " password "パスワード" 
    Device 'wlx106f3fxxxxxx' successfully activated with 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.

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

    $ ifconfig
    wlx106f3fxxxxxx Link encap:Ethernet HWaddr 10:6f:3f:xx:xx:xx 
     inet addr:xxx.xxx.xxx.xxx Bcast:xxx.xxx.xxx.255 Mask:255.255.252.0
     inet6 addr: fe80::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
     RX packets:595 errors:0 dropped:0 overruns:0 frame:0
     TX packets:372 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:1000 
     RX bytes:86952 (86.9 KB) TX bytes:82940 (82.9 KB)

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


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

    投稿日 2017年 11月 28日 コメントはありません

    秋月で 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 だけのようです。


  • NanoPi NEO2でタイムラプス撮影

    投稿日 2017年 11月 27日 コメントはありません

    部屋を掃除していたらELECOMのWebカメラが出てきました。LinuxMintのマシンに挿してみたところ uvc カメラとして認識するようでしたので、NanoPi NEO2に挿してみたらこちらも認識しました。

    なので、TimeLapse撮影ができないか、試してみました。
    ググると Ubuntu でTimeLapseをやっている方は結構いるようで、基本的にはそちらに倣ってやってみました。

    基本、NanoPi NEO2に合わせている以外はこちらのページのパクリです。

    1.カメラ画像の連続キャプチャ

    1枚単位での撮影には fswebcam を使うのが簡単なようです。

    $ sudo apt-get install fswebcam

    でインストールできます。で、連続撮影する場合には、1枚キャプチャするシェルスクリプトを書いて、cron で所定の時間毎に1枚キャプチャ、というのが簡単なようなのですが、NanoPi-NEO2のUbuntu-coreではcronはユーザーに開放されてないっぽいです。crontab -eとしても編集できないですし、ググってもシェルスクリプト内でループしてsleepで時間待ちせよ、みたいなことが書いてあります。

    結局、以下のようなシェルスクリプトで連続撮影します。ファイル名は TimeLapse.sh として、ホームディレクトリの下に CaptureImage というディレクトリを作って、そこに置きました。

    #!/bin/bash
    while true;
    do
    	DATE=$(date +"%Y%m%d%H%M%S")
    	fswebcam --quiet --jpeg 95 --timestamp "%Y-%m-%d %H:%M:%S (%Z)" -r 800x600 /home/pi/CaptureImage/$DATE.jpg
    	sleep 2s
    done

    作成したスクリプトに実行権限を付けてやります。

    $ chmod +x TimeLapse.sh

    で、実行すると、ザクザクと画像が溜まっていきます。

    2.キャプチャした静止画の引取の準備

    動画への変換はホスト側でやります。

    ホスト側で

    $ mkdir nanopi
    $ sshfs pi@nanopi-neo2.local: /home/xxx/nanopi

    として、sshfsでnanopi側のホームディレクトリをローカルディレクトリにマウントして、これで引き取ります。
    (今考えれば、sshfsでマウントしなくても scp でも良かった・・・)

    3.画像の変換の準備

    ローカル側でffmpegで変換しますが、motionをインストールするほうが楽だという情報があったので、そうしました。

    $ mkdir motion
    $ cd motion
    $ sudo apt-get install motion

    4.画像の引取と変換

    以下の手順で画像の引取と変換を行います。

    $ cp ../nanopi/CaptureImage/*.jpg .
    $ c=1 ; for i in ??????????????.jpg ; do mv $i `printf %d $c`.jpg ; c=$((c+1)) ; done
    $ ffmpeg -f image2 -r 15 -i %d.jpg -r 15 -an -vcodec libx264 -pix_fmt yuv420p video.mp4

    これで TimeLapse ができましたが、静止画の保存サイズが大きいようです。
    1分間で3〜4MB出力しているようなので、1週間で40GBくらいになってしまいます。ちょっと要対策ですね。


  • NanoPi NEO2のデバッグシリアルに苦労した話

    投稿日 2017年 11月 8日 コメントはありません

    Gigabit Ethernet環境でtcpdumpをひたすら放置で動かしておきたくて、NanoPi NEO2に手を出してました。

    ファイルシステムのイメージファイルは違いますが、NanoPi NEOと同じ手順で環境構築できて、一度はシリアルコンソールが動いているUART0(デバッグシリアル)も動いていたのですが、しばらくシリアルコンソール無しで運用した後、再びシリアルコンソール経由で操作をしたくなった時に苦労しました。

    公式サイトにある端子説明がこちらで、実物を半田面から写真を取ったのが以下です。

    わかりますでしょうか??

    実は写真に写っているNanoPi-NEO2の実物のデバッグシリアルの端子表記は間違っているので、シルク印刷の端子表記を信用すると動かない、という罠に陥ります。本当は、写真の上から、GND、5V、TX、RXの順で逆順になっています。

    ・・・ということで、最初に動かした時は公式サイトの端子説明をみて配線したので無事動いたのですが、今日改めて動かそうとした時には基板のシルク印刷をみて動かそうとしたので、動かなかった、というオチでした。悩んだ数時間を返してくれ、という感じです。


  • Pine A64+ 2GBにarmbianをインストール

    投稿日 2017年 7月 26日 2個のコメント

    Pine A64+ であるが公式サイトのUbuntu Mateはアップデートを行っていくと /boot パーティションの容量不足でアップデートができなくなってしまいました。これを機会に、armbianを試してみました。(ちなみに、以前の記事では1GB版でしたが、その後、秋月で2GB版が出ていたので買ってしまいました・・・)

    1.イメージを書き込み

    Ubuntu Desktopをこちらから bit torrent 経由でダウンロードして、ファイル展開、Linux Mint のUSBイメージライタで16GBのMicroSDカードに書き込みます。

    2.起動

    HDMIで液晶モニタに接続、USBでキーボードとマウスを接続してMicroUSB経由で電源供給してしばらくすると、CLIのログイン画面が表示されます。ここで、ユーザー名:root、パスワード:1234でログインすると、rootのパスワード変更が求められますので、パスワード設定を行います。引き続き、一般ユーザーの作成が求められますので、ユーザー名とパスワードとその他のログイン情報(空欄のままで大丈夫)を設定していきます。設定が終わると、GUIが起動します。

    3.アップデートの適用

    DHCPサーバーのある環境なので、何もしなくてもネットワークに接続できるようになっています。termnialを開いて、

    $ sudo apt-get update
    $ sudo apt-get install

    でアップデートをすべて適用します。

    4.日本語サポートの追加

    左上の「Application」から「Setting」を選択、その下の「Language Support」を選択すると、「The language support is not installed competely」と表示されるので「Install」をクリックして不足部分のインストールを行います。この処理はかなり時間がかかります。途中、パスワード入力を求められるので、適宜入力してやります。
    インストール直後だとサポート言語はEnglishのみなので、下の方の「Install/Remove Languages…」をクリックして、Japaneseにチェックを入れて「Apply」をクリック。
    再起動してログオンし直すと、メニューなどが日本語化されます。

    5.時計表示の修正

    時計表示を右クリックしてプロパティを選択、タイムゾーンが空白になっているので、Japanに修正すると時刻表示が正しくなります。

    6.ArmbianのConfig

    デスクトップ上のConfigのアイコンをダブルクリックすると、uxtermが開いてその中でUbuntu16.04のconfiguration utilityが起動します。とりあえず必要な設定項目はないようですが、ここに設定があることを忘れないために備忘録としてメモしておきます。

    7.ToDo

    残っていること

    • 解像度が1280×720になっているので、1920×1080に変更したい。
    • 日本語入力の設定

  • 秋月のLPC11U35マイコンボードを動かしてみた

    投稿日 2017年 7月 10日 コメントはありません

    久しぶりに秋月へ行ったら、「USBメモリにファイルを書き込むのとほぼ同様の手軽さでプログラムを書き込むことができます」という触れ込みのマイコンボードが安く売っていたので、買ってみました。

    で、動かしてみるべく、Linuxマシン(環境はいつものLinux Mintです)へ接続すると、確かにマスストレージデバイスとして認識します。で、秋月のWebサイトにある動作確認用ファームウェアを書き込んで、リセットしてみても、再びマスストレージデバイスとして認識されて、LEDが点滅する気配がありません。

    mbedとしても動作する、というのでサンプルプログラムを作って同様に書き込んでみてもサッパリです。linuxではドラッグアンドドロップでの書き込みはうまく行かないのかと思って、コマンドラインで cp コマンドでコピーしてみてもダメです。

    で、ぐぐってみたら、どうやら linux ではそもそもファイル書き込みではうまくいかないようで、こちらの情報によると先頭の4ブロック(2キロバイト?)を削ってddで書き込むとうまく行くようです。

    ただ、デバイスファイルなんていろんな要因で変わってしまうので、毎回やるのは面倒ですし、事故のもとなので、pythonのスクリプト化しました。

    lsblkコマンドで見た時に、転送方法が usb で、モデルが’LPC1XXX IFLASH  ‘となっているデバイスファイルを探して、そのデバイスファイルをアンマウントして、ddコマンドで書き込むだけです。スクリプトファイル⇒mbedにlinuxから書き込むためのスクリプト

    ルート権限が必要なのは変わらないので、sudo 付きで python スクリプトを実行します。

    $ sudo python ./write_mbed.py firmware.bin 
    mbed device is /dev/sdc
    umount /dev/sdc
    dd if=firmware.bin of=/dev/sdc seek=4
    16+1 レコード入力
    16+1 レコード出力
    8456 bytes (8.5 kB, 8.3 KiB) copied, 0.387457 s, 21.8 kB/s

    みたいな感じで使います。(途中の umount とか dd コマンドの行はこのスクリプトの処理内容を表示しているだけで、書き込みに必要な操作は最初の1行目だけです)

     


  • Pine64を買ってみた

    投稿日 2017年 5月 21日 コメントはありません

    秋月に Pine64 A+ 1GB が入っていたので、買ってみました。価格はRaspberry Pi 3よりも安い2,980円。といっても、Pine64 A+はBluetoohもWiFiもないのでちょっと価格差的には微妙かもしれない。一緒に長さ15cmのmicroUSBケーブルとHDMIケーブルを購入。

    早速、秋月のページにある公式サイトへのリンクからUbuntu Mateのイメージをダウンロードして、ddコマンドで適当な8GBのMicroUSBに書き込んでMicroUSBコネクタに挿入、HDMIケーブルでディスプレイに接続、マウスとキーボードを接続、イーサケーブルをルータに接続して、MicroUSBコネクタを挿して電源投入。・・・が、電源LEDは点くものの、うんともすんとも言わない。
    MicroUSBケーブルを1.5mの長いものから購入した15cmの短いものに変更したら起動した。結構電流を食うので電圧降下しているのかもしれない。

    起動すると、グラフィカルログイン画面になるので、ユーザー名: ubuntu 、パスワード: ubuntu でログインする。当然かもしれないけど、英語モードで起動。ターミナルを開いたりしてみたが結構軽快に動くようである・・・が、やっぱりストレージがMicroSDなのでストレージアクセスを伴うものはちょっともたつく。

    とりあえず、アップデートをかけてみる。

    $ sudo apt-get update
    $ sudo apt-get upgrade

    を試してみるが、何かパッケージの不整合を起こしているみたいで、追加でコマンドが要る模様。指示に従って、以下の通り試してみた。

    $ sudo dpkg --configure -a
    $ sudo apt-get install -f
    $ sudo apt-get upgrade

    でとりあえず一通りはアップデートができた模様。

    System ⇒ Preferences ⇒ Hardware ⇒ Keyboard ⇒ Layout で Add を押して、キーボードレイアウトで Country で Japan を選んで Add を押す。レイアウトの順位を Japanese を一番上にして Close を押したら、キーボードレイアウトが日本語になった。

    System ⇒ Preferences ⇒ Personal ⇒ Language Support を選択すると、The language support is not installed completely と出るので、Install を押す。パスワードが聞かれるので入力すると、language support をインストールし始めた。しばらく待つと、インストール完了。
    この状態だと英語のみなので、 Install/Remove Languages … を押して、Japaneseにチェックを入れてApplyを押すと、フォントやfcitx、libreofficeのモジュールなどをダウンロード&インストールし始めた。
    完了したら、Language for menus and windows のリストの一番下にある日本語を一番上にドラッグ&ドロップ、Keyboard input method system を fcitx に設定して、Apply System-Wide をクリック、再度パスワードを聞かれるので入力。
    次に Regional Formats タブを選んでこちらも日本語を選択して Apply System-Wide をクリック。完了したら Close を押して、一旦ログアウトしてログインし直すと、日本語化が完了している。

    これだけだと、日本語入力で漢字キーが使えなかった。キーボードの選択で言語別で日本語を選択しておく必要があったようで、設定を修正。右上のキーボードのアイコンを右クリックして「設定」を選択すると、キーボードが英語になっているので、「+」を押して日本語キーボードを追加、順番を一番上に持ってくる・・・が、日本語入力はできない。

    とりあえず、

    $ sudo apt-get install synaptic

    で手慣れた Synaptic をインストール。

    Synaptic パッケージマネージャから ibus-anthy をインストールして、システム⇒設定⇒ユーザ向け⇒言語サポートで、キーボード入力に使うシステムとして IBus を選択して再起動後、右上のキーボードアイコンから日本語−Anthyを選択したところ、日本語入力ができるようになった。

    とりあえず、使えるようになった。


  • WordPressでログインできなくなった!

    投稿日 2017年 2月 27日 コメントはありません

    WordPressでログイン認証のセキュリティ強化にCAPTCHAを入れようと、プラグインから「SI CAPTCHA Anti-Spam」をインストールしてみました。

    設定でログイン画面にキャプチャを入れて、ログアウトしてログインしなおしたらCAPTCHAが表示されていません(!)。

    しかも、ログインできない!!

    で、調べてみると、「SI CAPTCHA Anti-Spam」には、GDというライブラリが必要なので、

    $ sudo yum -y install gd php-gd

    としてインストールを試みるも、さくらのVPSにインストールしたPHPのバージョンが合わずphp-gdがインストールができません。

    で、四苦八苦した挙句の解決方法は、「プラグインディレクトリの名前を一時的に変更する」という方法でした。

    /home/(ユーザー名)/public_html/wordpress/wp-contents/plugins にカレントディレクトリを変更して、プラグインの名前の付いたディレクトリの名前を一時的に変更してやると、無事にログインできました。

    ログインしたら、ディレクトリの名前を元に戻して、プラグインを停止・削除しました。

    いや、焦りました・・(^^;


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

    投稿日 2016年 9月 10日 コメントはありません

    通常の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

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