2018年6月13日水曜日

JumboSPOTのファームウェア・アップデート

Back


  DMR(勿論D-STARも含むMMDVMすべて)を始めようとするとノード・デバイス(ZumSPOT,MMDVM HS hat,JumboSPOTなど)のファームウェア・アップデートが必要となります。

ファームウェアのダウンロードサイト

  いろいろなデベロッパーが自身のMMDVMボードを開発すると同時にファームウェアも提供していますが、私はボード開発にも関わりつつ、各種ボード向けにファームウェアを提供している Andy CA6JAU のサイトからダウンロードしました。



      
  1. 上図をクリックすると、Git Hub のダウンロード画面が表示されます。次の図のようにグリーンのボタンをクリックし、URLをクリックボードにコピーします。



  2. Raspbery Pi のターミナル上で、コマンドに続いてURLを貼り付けます。nano の場合はカーソル(マウスカーソルではありません)をコマンドの後にスペースを空けて置き、マウスの右クリックをするとカーソル位置に貼り付きます。

  3. $ git clone https://github.com/juribeparada/MMDVM_HS.git
    

    コマンドが無いと言われた場合は、インストールしてください。

    $ sudo apt install git
    

  4. MMDVM_HS と言うフォルダが作成されますので、その中に入ります。ここではコンパイルの必要は有りません。

  5. $ cd MMDVM_HS
    $ ls
    ADF7021.cpp    DMRDefines.h     DStarRX.cpp    NXDNRX.cpp         SerialRB.h
    ADF7021.h      DMRDMORX.cpp     DStarRX.h      NXDNRX.h           SerialSTM.cpp
    bin            DMRDMORX.h       DStarTX.cpp    NXDNTX.cpp         STM32F10X_Lib
    BitRB.cpp      DMRDMOTX.cpp     DStarTX.h      NXDNTX.h           stm32f10x_link.ld
    BitRB.h        DMRDMOTX.h       GitVersion.h   obj_f1             stm32f4xx_link.ld
    bootloader.ld  DMRIdleRX.cpp    Globals.h      P25Defines.h       stm32f7xx_link.ld
    BUILD.md       DMRIdleRX.h      IOArduino.cpp  P25RX.cpp          Utils.cpp
    CalDMR.cpp     DMRRX.cpp        IO.cpp         P25RX.h            Utils.h
    CalDMR.h       DMRRX.h          IO.h           P25TX.cpp          version.h
    CalRSSI.cpp    DMRSlotRX.cpp    IOSTM.cpp      P25TX.h            YSFDefines.h
    CalRSSI.h      DMRSlotRX.h      LICENCE        README.md          YSFRX.cpp
    Config.h       DMRSlotType.cpp  Makefile       scripts            YSFRX.h
    configs        DMRSlotType.h    MMDVM_HS.cpp   SerialArduino.cpp  YSFTX.cpp
    CWIdTX.cpp     DMRTX.cpp        MMDVM_HS.ino   SerialPort.cpp     YSFTX.h
    CWIdTX.h       DMRTX.h          normal.ld      SerialPort.h
    Debug.h        DStarDefines.h   NXDNDefines.h  SerialRB.cpp
    
    

  6. さらに、その中に有る scripts と言うフォルダに入ります。

  7. $ cd scripts
    $ ls
    build_fw.sh                install_fw_gen_gpio.sh     install_fw_nanodv.sh
    install_buildtools.sh      install_fw_hsdualhat.sh    install_fw_nanohs.sh
    install_fw_custom.sh       install_fw_hshat-12mhz.sh  install_fw_rpi.sh
    install_fw_duplex_gpio.sh  install_fw_hshat.sh       install_fw_usb.sh
    install_fw_duplex.sh       install_fw_librekit.sh
    
    $ cd
    
    

      ここには、各種のボードに対応したファームウェア・インストーラが揃っていますが、今回使用するJumboSPOT用は、install_fw_hshat.sh です。確認が出来たら次のステップに移ります。

アップデートに必要なファームウェア書き込みソフトのインストール

  1. ファームウェアと同様のやり方で Git Hub から stm32flash をクローンします。

  2. $ git clone https://git.code.sf.net/p/stm32flash/code stm32flash
    

  3. フォルダの中に入り、コンパイルした上でインストールします。

  4. $ cd stm32flash/
    $ make
    $ sudo make install
    

      これで、インストール完了です。

最後の段階、アップデートを実行

  1. 最も大事なことは、MMDVMHost を前もって停止させておく事です。

  2. $ sudo systemctl stop mmdvmhost.service
    
    又は直接、
    $ sudo pkill MMDVMHost
    

  3. 先ほどのファームウェアアップデート用フォルダへ戻ります。コマンドの前に付いている[ドット][スラッシュ]はスクリプトを実行する時のおまじないです。

  4. $ cd MMDVM_HS/scripts
    $ ./install_fw_hshat.sh
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100   609    0   609    0     0    670      0 --:--:-- --:--:-- --:--:--   670
    100 42152  100 42152    0     0  17542      0  0:00:02  0:00:02 --:--:-- 33453
    Raspberry Pi 2 or Pi Zero W detected
    stm32flash Arduino_STM32_0.9
    
    http://github.com/rogerclarkmelbourne/arduino_stm32
    
    Using Parser : Raw BINARY
    Interface serial_posix: 57600 8E1
    Version      : 0x22
    Option 1     : 0x00
    Option 2     : 0x00
    Device ID    : 0x0410 (Medium-density)
    - RAM        : 20KiB  (512b reserved by bootloader)
    - Flash      : 128KiB (sector size: 4x1024)
    - Option RAM : 16b
    - System RAM : 2KiB
    Write to memory
    Erasing memory
    Wrote and verified address 0x0800a4a8 (100.00%) Done.
    
    Starting execution at address 0x08000000... done.
    
    
    $ sudo reboot
    
    

      これでファームウェア・アップデートは完了です。

      ファームウェアのバージョンに関して表示する部分が無く、本当に最新か分からない(ソースの version.h では確認できるが)と思われるかも知れません。 スクリプトを nano で開くと、

      GNU nano 2.7.4                   File: install_fw_hshat.sh
    # Configure latest version
    FW_VERSION="v1.3.7"
    

    とあり、現時点での最新版をダウンロードしていることが分かると思います。


Back


73
J E 3 H C Z /XLX047 B

2018年6月9日土曜日

MMDVMノード用、ネットワークモニター

Back


モービル運用中、DMR から D-STAR に切り替えたい時、又 DMR 受信中他のトークグループに移りたい時などの送信タイミングが、無線機だけだと分かり難かったので(デスクトップならPi-Starでも良い)、Nextion 2.4インチで構成してみました。これで車内での操作がやり易くなります。




2018年6月6日水曜日

MD-380 のファームウェア・CPS・ユーザリストのアップデート

Back


  ここ数年、TYT Electronicsのシンプルな(少し文字化けした)UpgraderとCPS(コードプラグを編集登録する)ソフトを使用して来ましたが、DMR IDをキーとしてコールサインや名前を表示してくれるユーザデータベースの書き込みにはLinux版のPythonアプリ(後述のMD380Toolsに同梱されている)を使用していました。先日数局からKG5RKIと言う方のアプリを紹介して戴きました。(後日情報のソースはJM8IXA 小松OMと判明、感謝致します。)
MD-380ファームウェアの主な提供元
  1. TYT Electronics Co., Ltd. ダウンロードサイト ➡ http://www.tyt888.com/?mod=download

  2. PD0ZRY Rudy's Site MD-380 Firmware ページhttps://pd0zry.nl/md380-fw/

  3. MD380Tools by Travis Goodspeed, KK4VCZ ➡ https://github.com/travisgoodspeed/md380tools
  4. これは、MD-380に新たな機能を加えるプロジェクトでその成果は上記 PD0ZRY Rudy's ファームウェアに反映されています。

  5. TyMD380Toolz by KG5RKI (DMR Track)➡ https://kg5rki.com/new2/tymd380.html
  6. このツールはTravis版MD380Toolsをベースにさらに改造を加えたバージョンです。今回の説明では後述のように書き込み用Flash Toolのみ使用させて戴きます。
MD-380運用に必要なソフトウェアとデータの関係
  • CPSCustomer Programing Software)コードプラグ(Codeplugs)を編集・書き込み
  • コードプラグとは、アイコム社のクローニングソフトのデータのようなもので(拡張子 .rdt)、CPSは同じくクローニングソフトです。これに関しては書き込み機能も持っていますのでファームウェアのアップデートなどとは分けて、このアプリを単独で使った方がやり易いと思います。

    TYT Electronics のソフトウェアなのですが、同社のダウンロードサイト(上述①)には有りません。見つからないだけかも知れませんが・・
    次のURLから入手出来ます。➡ DMR at Foxhollow

  • Tytera Flash Tool ファームウェアやユーザデータベース、コードプラグの書き込み
  • 上記の提供元④ DMR Track からTytera Flash Tool v1.08c_BETA (MD380/MD390) をダウンロードします。

  • MD-380 Firmware
  • 基本は、提供元①の純正ファームウェアですが、今回はMD380Toolsの機能拡張版(提供元②)をダウンロードして、上記 Tytera Flash Tool で書き込みます。(拡張子 .bin
    firmware-20180531-010001-db7d3aab.bin この書式のものがMD-380用です。firmware-S13.020-20180531-010001-db7d3aab.bin はGPS付きのファイル名です。

  • USERDB, users.csv, DMRid.datなど色々呼び名が有ります(今回ダウンロード不要)
  • 必要な形態でダウンロード可能です。➡ DMR LastHeard by DL5DIのダウンロードサイト
ファームウェアのアップデート手順
  1. まず書き込み用ソフトウェア TyteraFlashTool_v1_08c_BETA を準備します。


  2. 解凍して出来たフォルダ内の TyteraFlashTool.exe(exeは表示設定で拡張子表示を選択した場合)をダブルクリックするだけです。

  3. ファームウェアのアップデート

  4. MD-380側の準備

    • 先ず電源を切ります。
    • USBプログラミングケーブルを接続します。
    • [PTTボタン]とその上の[小さなボタン]を同時に押しながら電源を入れます。
    • 画面が消えたまま、緑と赤のLEDが交互に着いたらプログラミングモードです。
    • このモードを使用するのは、運用に関するアップデートではファームウェアの時だけです。



    • 前項で示した MD-380 Firmware firmware-20180531-010001-db7d3aab.bin(バージョンは日付以降が変わります)をダウンロード、デスクトップなどに置きます。
    • Open]をクリックし、デスクトップに置いたファームウェアを選択、矢印のように表示します。
    • Flash from file]をクリックすると・・
    • 最下部のように[writing firmware ...]と表示され黄色いプログレスバーが進みます。
    • 完了したら、電源を入れ直すとほぼ変わらない画面が立ち上がります。これらの設定については又何れ・・。

  5. その他の方法によるファームウェアアップデート



    • 前項のようにMD-380をプログラミングモードにします。
    • 今回は[FIRMWARE]の下に有るドロップダウンメニューからファームウェアを選択します。 前項のファイルによるアップデートでも使用したMD380Toolsにしました。 上2つ、TyMDToolz(正しくはTyMD380Toolz:最後の文字がゼット"Z"であることに注意)はこの書き込み用ソフトの作者が改良したファームウェアです。
    • Download NON-GPS]をクリックするとダウンロードが始まります。終わると最下部の様にプログレスバーに[Done Downloading. Press Flash Button.]と表示されます。
    • 指示どおり[Flash]を押すとファームウェアアップデートが実行されます。
    • 完了したら、電源を入れ直すと画面が立ち上がります。

    ②の方法と全く同じ MD380Tools であるかは確認できていません。見た感じでは違いは感じませんでした。

ユーザデータベースのアップデート手順

  • このアップデートに関してはUSBプログラミングケーブルを接続したら、通常のように電源を入れます。
  • 図のように[USERDB]の右に有る[Download Update]をクリックします。
  • Done]と表示されますので、ダウンロードボタンの下に有る[Flash]ボタンをクリックします。
  • 9万件以上のデータベースですので少し時間を要します。

以上、MD-380運用上最低限のアップデートについて記しました。


73
J E 3 H C Z /XLX047 B

2018年5月30日水曜日

dv_apのソースファイルからコンパイルしてアップデートする方法

Back


最新版のソースをダウンロード

  1. 7M3TJZ 安田OMのダウンロードサイト(https://ja.osdn.net/users/jk1zrw/)より dv-ap をダウンロードします。

  2. dv-ap をクリックすると次のページに移りますので図のような最新pushのリンクをクリックしてください。



  3. 次のページで、右上に有る URL をコピーしてください。



  4. Raspberryのターミナルで次のようなコマンドを使用してダウンロードします。

  5. $ sudo apt install git
    $ git clone git://git.osdn.net/gitroot/dv-ap/dv-ap.git
    $ cd dv-ap
    

    dv-apというフォルダが作成されます。内容はdv_apのソースファイルです。
    (注意:フォルダ名はハイフン(-)、プログラム名はアンダースコア(_))

コンパイル時使用される Makefile を編集

  1. 実際は下記の内容をMakefileと言う名前で保存してください。

  2.   GNU nano 2.7.4                         File: Makefile
    #######################################################################
    #  Makefile for compiling dv_ap
    #
    #  Arranged by je3hcz based on 7m3tjz's original
    #######################################################################
    
    # Program Name and Object file names
    bin_PROGRAMS    = dv_ap
    dv_ap_OBJECTS   = main.o aprs2dstar.o aprs.o beacon.o crc.o dvap.o \
                      dv_utils.o echo_server.o from_inet.o from_node.o \
                      gps_a.o gps.o handler.o httpd_srv.o init.o \
                      node_usb_init.o pass_send.o print_PICinfo.o \
                      read_config.o reply_busy.o send_check.o send_inet.o \
                      send_node.o send_resp.o status.o upnp.o
    
    # Redefine MACROs
    CC              = gcc
    dv_ap_LIBS      = -lusb -lcrypto
    
    # Define extention of Suffix Rules
    .SUFFIXES   : .c .o
    
    # Rule of compiling programs
    $(bin_PROGRAMS) : $(dv_ap_OBJECTS)
        $(CC) $(dv_ap_LIBS) -o $(bin_PROGRAMS) $^
    
    # Suffix Rule
    .c.o    :
        $(CC) -c $<
    
    # Target of Delete files
    .PHONY  : clean
    clean   :
        $(RM) $(bin_PROGRAMS) $(dv_ap_OBJECTS)
    
    # Dependency of Header Files
    main.o          : dv_ap.h
    aprs.o          : dv_ap.h
    beacon.o        : dv_ap.h
    crc.o           : crc.h
    dvap.o          : dv_ap.h
    dv_utils.o      : dv_ap.h
    echo_server.o   : dv_ap.h
    from_inet.o     : dv_ap.h
    from_node.o     : dv_ap.h
    gps_a.o         : dv_ap.h
    gps.o           : dv_ap.h dprs_symbol.h
    handler.o       : dv_ap.h
    httpd_srv.o     : dv_ap.h config.h
    init.o          : dv_ap.h
    node_usb_init.o : dv_ap.h
    pass_send.o     : dv_ap.h
    print_PICinfo.o : dv_ap.h
    read_config.o   : dv_ap.h
    reply_busy.o    : dv_ap.h
    send_check.o    : dv_ap.h
    send_inet.o     : dv_ap.h
    send_node.o     : dv_ap.h
    send_resp.o     : dv_ap.h
    status_send.o   : dv_ap.h config.h
    upnp.o          : dv_ap.h
    
    
    図中はRaspberry上ではバックスラッシュで長い一行を数段分割した時の接続詞です。

  3. もし、Makefile:25: *** missing separator. Stop. の様なエラーが発生した時は、インデントされた $(CC) 2箇所と $(RM)1箇所の前にスペースが入っていると思われるのでスペースを全て削除して TAB ひとつを挿入してください。 ([Ctrl]+[o],[Enter],[Ctrl]+[x]で保存)

  4. *ヘッダーファイルの依存関係部分は更にスマートな記述が有るのだろうと思っていますが、現状分かりません。ご教授賜れば幸いです。

コンパイルを実行する

  1. 実行は $ make のみ(ダウンロードした状況によっては sudo が必要になる場合も有ります。)

  2. アップデートではなく新規にインストールされる方の場合、ここで「USBに関するヘッダファイルが有りません」というメッセージが表示されることが有ります。 その場合は、libusb をインストールしてください。

    $ sudo apt install libusb-dev
    

  3. 作成されたプログラムを規定のフォルダに写します。

  4. $ sudo mv dv_ap /usr/bin
    $ sudo reboot
    

    移動ではなくコピー($ cp ...)でも良いのですが dv_ap が動いたままだとコピーに失敗します。

    次のようにするとコンパイル中のトランザクションファイルなどが削除されます。 コンパイルし直す場合には必ずこの作業を行ってから実行してください。

    $ make clean
    


以上でアップデートは終了です。ダッシュボードのバージョンが合っているか確認してください。

73
J E 3 H C Z /XLX047 B
Back




2018年1月17日水曜日

ノードアダプターV7のドライバーとファームウェアアップデート(Windows10 64bit)

Back


■ ノードアダプターV7をWindows10に認識させる

 従来、setup_7.exe をインストールするとUSBを接続するだけで簡単に認識してくれたのですが、Windows 8 からドライバーに[!]マークがついて認識してくれません。 さらに Windows 10 では署名が無いドライバーは100%拒否されます。

前述のノードアダプターV7をWindows 8(64ビット)に接続する(LibUSB-Win32)とほぼ同様の内容ですが、 Windows 10 から仕様変更された点を含めて新たに書き直しました。

ノードアダプターV7はLinuxのLibUSBと言うドライバーを使用しています。左図をクリックしてWEBからドライバーを     Download    します。

libusb-win32-bin-1.2.6.0.zip
解凍するとフォルダが作成されますので、その中の[bin]と言うサブフォルダを開きます。

左図のように、inf-wizard.exe(設定で拡張子.exeなどを表示させています)が確認できます。

次のステップで、ドライバーをインストールする為の .inf ファイルを作成します。

先ず、inf-wizard.exe を立ち上げます。
  1. 最初の画面で[Next]すると、ドライバーの一覧画面になります。
  2. ここで、Vendor ID: 0x04D8 Product ID: 0300 のドライバーを選択します。過去に純正のノードアダプター用ドライバーをインストールしたことがあれば、その名前も表示されています。
どれか分からない場合も有りますので、デバイスマネージャーで該当するUSBを挿した時現れるドライバーの[プロパティ]の[詳細]で[ハードウェアID]を調べておくと良いでしょう。 (下図参照)

  1. ハードウェアID 又は名前の一致するものを選択して[Next]。
  1. 詳細に付いて名前などは書き換えることが出来ます。

  2. 確認して[Next]をクリックすると、保存画面が現れるので[ドライバー名.inf]を保存する。 次の段階でインストールする時保存したフォルダを指定する必要が有るため、忘れないようにしてください。
INFファイル作成ウィザードはこれで終了です。[Install Now..]のボタンが有りますが、

Windows 10 では署名の無いドライバーは拒否されますので、次の段階でこの制限を無効にしてから改めてインストールします。

  1. Done]をクリックして終了します。



■ 署名の無いドライバーに対する制限を解除する

 前項で記述した様にすぐにインストールを始めると、左図のようにドライバー(INFファイルであっても)に署名が含まれていないためインストールが中断します。

 そこで、システム自体を一時的に「署名を必要としない」状態に設定します。

  1. Shift]キーを押しながら[再起動]をクリックします。

  1. オプション選択画面が現れたら次のように選択して、最後に[再起動]します。
オプションの選択
  │
  └トラブルシューティング
     │
     └詳細オプション
        │
        └スタートアップ設定
           │
           └[再起動
  1. マシンが再起動すると立ち上げ途中で、左図のような画面が現れます。

7)ドライバー署名の強制を無効にする

を選択するために[7]キー又は[F7]キーを押します。

これで、署名が無くてもインストール出来るようになります。


=MEMO= これでもインストールが出来ないケースもあるようですが、その時は「DOSコマンド」を管理者権限で立ち上げ、bcdedit /set TESTSIGNING ON を実行します。 インストールだけでなくドライバーの使用中も、この「テストモード」を継続させておく必要がある場合も有るようです。
不要な場合は bcdedit /set TESTSIGNING OFF を実行し解除します。


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

  1. Start Menu]を右クリックして[デバイスマネージャー]を立ち上げます。

  2. 次にドライバーのインストールが終了していない目的のエントリーを右クリックして[ドライバーの更新]を選択します。
  1. 参照]ボタンをクリックして、最初の項で作成した ドライバー名.inf ファイルの有るフォルダを指定します。


  2. 次へ]をクリックします。
  1. 下段の[このドライバー ソフトウェアをインストールします]をクリックします。
これで、最後までインストールが進み、デバイスが使用可能になります。


■ ノードアダプターV7の初期化、ファームウェアアップデート、テスト

アップデート・テスト用各ファイルを安田OMのサイトよりダウンロードしてください。

ノードアダプターV7日本語サイト http://www.d-star.asia/node_adapter_v7.html.jaのページより
  1. rf_read V01.04 (RX test program)

  2. エコーテストプログラム(V00.03 06/14/09)とオーディオファイル(それぞれ別ファイル)

  3. 初期値設定プログラム「Default setting program V04.03 (10/31/2011 include DLL) V07.56以降で使用してください」 (V04.03と書かれていますが最上段は V04.04 です)

  4. 上記三ヶ所4ファイルをダウンロードしてください。
ノードアダプターV7英語サイト http://www.d-star.asia/node_adapter_v7.html.enのページより
  1. Firmware Update Programs node_update_client.02.09.zip

  2. 日本語サイトにあるファイルは 02.08 で最新版は英語サイトにしか有りません。

=MEMO= 1,2の3ファイルはテスト用のひとつのフォルダ(仮に Tester)にまとめてください。オーディオは audio と言うフォルダになりますがそのまま同一フォルダに移動してください。他のZIPファイルは解凍したままのフォルダで構いません。アップデート用、設定用、テスト用の3つのフォルダが出来ます。

=MEMO= なお、初期化の必要な場合は同様に安田OMのサイトにて初期化の方法を確認の上、行って置いてください。初期化しなくてもファームウェアの上書きは可能です。

  1. 先ず[スタートメニュー]の[Windows システムツール]から[コマンド プロンプト]を右クリックし[その他]の中から[管理者として実行]します。

  2. さらに、次のコマンドでアップデートツールのフォルダに入ります。
  3.  管理者: コマンド プロンプト
    Microsoft Windows [Version 10.0.16299.192]
    (c) 2017 Microsoft Corporation. All rights reserved.
    
    C:\WINDOWS\system32>cd \Users\USER\desktop\node_update_client.02.09
    C:\Users\USER\Desktop\node_update_client.02.09>
    
    


  4. 最新版にアップデートします。(-p 889 は最新版へのポート指定です)
  5.  管理者: コマンド プロンプト
    C:\Users\USER\Desktop\node_update_client.02.09>node_update_client -p 889
    Node adapter Firmeware Update program V02.09 (C) 2010-2011 Satoshi Yasuda
    Do not distribute this program without my permission!
    
    Do you set the bootloader mode? Yes/No => yes
    Enter Serial Number => 07000xxx
    
    Are you sure for update? Yes/No => yes
    DV Firmware Updater flash erasing: DONE.
    DV Firmware Updater id programming: DONE.
    DV Firmware Updater eeprom programming: DONE.
    DV Firmware Updater flash programming: DONE.
    DV Firmware Updater id programming: DONE.
    DV Firmware Updater eeprom programming: DONE.
    DV Firmware Updater flash verifying: DONE.
    DV Firmware Updater id verifying: DONE.
    DV Firmware Updater eeprom verifying: DONE.
    RESET Device
    Operation successfully completed.
    
    C:\Users\Yosh\Desktop\node_update_client.02.09>
    


  6. アップデートされたファームウェアを個人の環境に合わせて設定します。

  7. グラフィカルツールなので、ダブルクリックして Nodeadapter_set.04.04 フォルダに入ります。
  8. Nodeadapter_set.04.04.exe を立ち上げ、[Setting]⇨[Basic Info.]と進みます。

  9. 規定値が表示されますが、アップデートや立ち上がらなくなった時のためにスクリーンショットを残しておくことをお勧めします。 右図は筆者の環境に合わせた設定値です。


  10. =MEMO= 安田OMのオリジナルサイトに掲載されているジャンパピンやトリマーによる設定が必要な場合は、次項のテストプログラムを併用してハードウェア調整をした上で初期値設定プログラムで変更するなど、微調整が必要です。

  11. ノード用無線機とノードアダプターV7のケーブル接続を確認して、ハンディ機等でノードアダプターV7側の受信状態をテストします。Testerフォルダ内の rf_read.exe をダブルクリックします。
  12.  C:\Users\Yosh\Desktop\Tester\rf_read.exe
    Node adapter RX Test program V01.05 (2010/12/14)
    (C) 2010 Satoshi Yasuda 7m3tjz/ad6gz
    Do not distribute this program without my permission!
    
    Node Adapter Firmware Information:
    D-STAR Node Adapter V07.75(2015/08/10) (C)7M3TJZ/AD6GZ
    This PIC program is licensed to JE3HCZ.
    Serial Number :  07000xxx.
    
    


  13. この状態でハンディ機を送信すると、ノード用無線機が受信してデータ端子からノードアダプターV7にデータが流れ込み表示されます。
  14.  C:\Users\Yosh\Desktop\Tester\rf_read.exe
    Wed Jan 17 05:56:47 2018
    YuCall : CQCQCQ    MyCall : JE3HCZ    MyCall2 : 3001  CRC : 93 5f
    Flags : 00 00 00  RPT2 : DIRECT    RPT1 : DIRECT
    
    DV STREAM
    ba 2c 2e 40 81 18 3c a5 ca 55 2d 16    25 62 85 % b ・ **SYNC**
    a6 48 ac 79 86 c8 5f e6 6e 30 1c d2    40 53 41 @ S A
    9b 2b a4 08 d1 56 af bd a4 31 1f a1    41 50 32 A P 2
    f6 4a a4 38 d0 43 0f e2 d4 31 6f c4    41 20 57 A   W
    bf 0e 3e 48 07 12 ed e4 f0 19 3d f6    69 72 65 i r e
    5b 63 82 53 f7 52 aa 17 92 32 2b b3    42 64 20 B d
    1a c0 06 32 45 ac 61 e4 66 47 61 a4    37 2e 37 7 . 7
    1a 40 8e 22 c7 26 69 c7 66 33 7a b3    43 35 20 C 5
    f3 4b 3a 00 66 08 da b1 a4 44 7e c5    34 31 56 4 1 V
    4a 62 8c 5b 40 a4 0d 00 9e 16 29 f5    66 66 66 f f f
    0b 81 8c 2a 50 5e ea 80 22 16 29 f5    66 66 66 f f f
    eb 4a 3e 10 66 03 ce e1 ac 16 29 f5    66 66 66 f f f
    ff c9 b8 00 85 0e ce 30 a8 16 29 f5    66 66 66 f f f
    bf 0e bc 40 37 52 ed e4 f0 16 29 f5    66 66 66 f f f
    ab cc b0 60 36 16 fd a4 f4 16 29 f5    66 66 66 f f f
    cf 0f bc 11 10 9d 85 a1 c8 16 29 f5    66 66 66 f f f
    bf 0e b8 50 e5 52 ed 65 f4 16 29 f5    66 66 66 f f f
    ab 4f bc 58 06 98 cd f4 f4 16 29 f5    66 66 66 f f f
    af cc b0 60 26 16 fd a4 f4 16 29 f5    66 66 66 f f f
    cf 0f bc 11 00 1f 8d a1 c8 16 29 f5    66 66 66 f f f
    bb 0e bc 40 07 12 ed e4 f0 16 29 f5    66 66 66 f f f
    
    cf 4f b8 01 c3 13 ad f1 8c 55 2d 16    25 62 85 % b ・ **SYNC**
    af cc b4 70 c4 16 fd 25 f0 25 4f 93    55 00 00 U
    cb 0f 3e 19 20 9d 85 a1 c8 70 0b da    00 44 49   D I
    bf 0e bc 40 27 12 ed e4 f0 25 1d d6    55 52 45 U R E
    bf 4e b8 50 c4 1e cd b4 b4 33 1b b3    43 54 20 C T
    ab 8c b8 40 67 16 e9 e5 f4 25 6f d7    55 20 44 U   D
    af 0e b8 50 46 1e ed 74 f0 39 1d d6    49 52 45 I R E
    cf 0f b8 01 e2 1f 8d 30 8c 25 0c c7    55 43 54 U C T
    bb 0e bc 40 07 90 ed e4 f0 50 6f d0    20 20 43     C
    bf cc b4 78 47 5b f9 24 f4 55 55 55    25 1a c6 %   ニ
    55 c8 7a                                               **Last Frame**
    
    

    RXトリマ調整する時は、この様子を見ながらもっともスムーズにデータが流れる所を選びます。(夏と冬で調整が必要な場合も有ります)
    また、全く反応しない時は前述の設定プログラム Nodeadapter_set.04.04RX Invert を反転(チェックがない場合付ける)します。

  15. 次に、送信テストをします。Testフォルダ内の echotest03.exe を立ち上げます。
  16.  C:\Users\Yosh\Desktop\Tester\rf_read.exe
    DV Echo Test program V00.03 Satoshi Yasuda
    PIC version: D-STAR Node Adapter V07.75(2015/08/10) (C)7M3TJZ/AD6GZ
    
    


  17. この状態で、ハンディ機でカーチャンクするとエコーサーバが応答します。
  18.  C:\Users\Yosh\Desktop\Tester\rf_read.exe
    Flags  : 00 00 00
    RPT2   : DIRECT
    RPT1   : DIRECT
    YuCall : CQCQCQ
    MyCall : JE3HCZ
    MyCall2: 3001
    CRC    : 93 5f
    

    音声を送信すると、エコーサーバがそのままエコーを返してきます。

    TXトリマを調整する時は、このエコーサーバの応答やエコーを利用して行います。 またハンディ機のSメータは振っているのに声にならない場合は設定プログラムで TX Invert を反転します。


以上で、アップデート及び調整・設定は終わりです。SAAPに接続したり、RaspberryPiとともにircDDBGateway/DStarRepeater(GMSK Modem)で使用する最善の状態となります。

73
JE3HCZ / XLX047 B

2017年11月8日水曜日

D-RATSとWinDVでチャット ~XLX047DをRatflectorとして使う~

Back


XLX047 Dを音声通信ではなくデータ通信用としてD-RATSとWinDVで利用する試みを行っています。つまり、XLX047 D に接続してキーボードで文字通信(チャット)するわけです。もちろんチャットだけではありません。メールタイプのメッセージ交換やファイル転送なども可能です。

この方法だと、WinDV で XLX047 D に接続して置いてその入出力ポート 20003(変更可能)に D-RATS をアタッチするという、何れも無償ソフトによるコストの掛からない方法で可能となります。 なお、「D-RATS に挑戦!! 第2弾 "Ratflector にアクセスしてみよう"」に記載致しました「Ratflector RATJA」については現在も稼働中で、D-RATSのソフトウェアのみで、より容易にアクセスできますのでご利用ください。

■ Windowsアプリのダウンロードとインストール

  1. 先ず、WinDVをダウンロードします。下記のURLをクリックするとログイン画面が表示されますので、ログインアカウントを取得してください。

  2. http://www.dutch-star.eu/my/login.aspx

  3. ログインが完了したら、左ペイン下方の
    > WinDV] をクリックします。

  4. 説明のページが表示されましたら、最下部の
  5. You can find this software in our Software Downloads page.

    をクリックし、ダウンロードページに移動します。

  6. 図中 **NEW** のマークが付いている DV Node ("WinDV") for Windows V1.5.8 BETA-3 をダウンロードします。

  7. ダウンロードされた windv-1.5.8p3-setup.exe をダブルクリックしてインストールします。

  8. 次に下記のURLから最新版のD-RATS(d-rats-daily-04172014-installer.exe)をダウンロードします。

  9. http://www.d-rats.com/download/tmp/

     ダブルクリックしてインストールし、自局のコールサインを設定するだけですが、詳細が必要な場合はD-RATS に挑戦!! "まず使ってみよう"をご参照ください。

■ WinDV を設定する

  1. WinDV をリフレクターに接続出来るように設定します。 [Tools]→[Options

  2. 電波は出さないのでコールサインは個人用で構いません。但し、使用する拡張子(A Bなど)は別途無線機にセットして、リピータから自動応答を呼び出すなどしてゲート越えした履歴を作って置いてください。

    コールサインサーバは図の通り選択して置いてください。RFデバイスは必要ありませんので[None]を選択します。

  3. リフレクタの住所録であるホストファイル(dcshosts.txt)を編集します。

  4. Cドライブのフォルダ C:\Program Files (x86)\MicroWalt Corporation\WinDV に有る dcshosts.txt を、エディタで開き末尾に次の一行を加えます。

    DCS047 xlx047.ddns.net

    その他にも接続方法(プロトコル)が有りますが、詳しくは XLX047 ダッシュボードの[Info.]ボタンを押してください。

    これで、WinDV で DCS047 を指定すればその住所が解決される事になります。

  5. WinDV で D-RATS が扱えるよう設定します。[Tools]→[Settings

  6. D-Rats]タブを開き、[Enable D-Rats]をチェックし、コールサインを入力します。

    これで、WinDV へ UDP20003 ポートを通じて送り込まれたスローデータとしてのメッセージ(音声と共に送られる20文字のメッセージとは異なる)が接続されているリフレクタのモジュールに流れます。


■ WinDVに対して文字データをやり取りするD-RATSの設定

  1. 先ず、D-RATSに送受信機能(Radio)を設定します。[File]→[Preferences]→[Radio

  2. Add]ボタンをして、Configというダイアログボックスが表示されたら、図のような設定をした上で[Add]ボタンを押してください。

    net:localhost:20003 という設定が一行登録されているのを確認したら[Save]してください。

    これで、[Chat]タブを開け、下方[Send]ボタンの左側に有る、一行分の枠がメッセージ入力欄です。試しに何か(日本語可)入力して[Enter]又は[Send]ボタンを押してみてください。WinDVが通常の会話のように送信するはずです。 同時に、D-RATSのメインウィンドウに自分自身の送信履歴が赤文字で表示されます。もし返答が返って来れば、その下に青文字で相手のメッセージが表示されます。

    さらに詳しくお知りになりたい方は「D-RATS に挑戦!! "まず使ってみよう"」から始まる4シリーズをご覧ください。


■ アマチュア無線らしい D-RATS の使い方

 上記の状態をRFを利用して構築することも可能です。実際にはその方がアマチュア無線的です。簡単に概念を書いておきたいと思います。DV Dongleをお持ちでない方も出来ますのでお試しください。

  1. まず XLX047 D に接続した G4KLXノードの ircDDBGatewayConfig で D-RATSを[Enable]にします。 これで XLX047 D からの D-RATS Data がノードを通して送信されます。

  2. 受け側の無線機のデータ端子とパソコンをUSBシリアル変換ケーブルなどで接続します。

  3. パソコンにインストールしたD-RATSで、Serial 設定の Radio を構成します。

  4. Name:[適宜] Type:[Serial] Serial Port:[COM?] Baud Rate:[9600]
もちろん、この通信は双方向で出来ます。
Back


73
J E 3 H C Z@XLXF047 B

2017年2月17日金曜日

DVAP、ノードアダプターV7をリピータ同様にするソフト(dv_ap)

Back


New style DVAP pi-zero W(2017.10.09)
DVAPノードアダプターV7 をリフレクターなどに接続して利用されている方は多いと思います。 最近は、DVMEGA や、OpenSpot、DV4mini 等々新しいデバイスも増えてD-STAR以外にもその用途が拡がって来ています。 また日本のコールサインルーティング(ゲート越え)の世界にも「ターミナルモードやアクセスポイントモード(アイコム社)」が実装され、必ずしもリピータを通さずとも遠隔地と交信できるようになって来ました。

今回は、接続タイプのノードであるDVAP又はノードアダプターV7を、安田OM (7M3TJZ局)が作成された dv_ap(JARL D-STAR委員会版)というソフトを使って、アクセスポイントモードのようにコールサインルーティング用のアクセスポイント(ノード)に仕上げます。

ここでご紹介している D-STAR ネットワークへの接続ツール(各種ノード・DVAPなど)の運用においては 免許申請について(安田OMサイト)をご参照ください。 (2013年8月 ガイドラインが示されました。)

説明文中ではDVAPを使用します。出力は10mWで最大でも100m位の範囲をカバーし、プライベートノードに適しています。またノードアダプターV7を使用した場合は、市販のデータ端子を持つFMアナログ無線機の信号がD-STARの信号に変換され、許可された出力の範囲で広域のノードとして利用できます。


=MEMO= Raspbian 9(Stretch)から、dv_ap に関連する部分が大きく変更されました。LANインターフェース名の書式変更及びSSLに関するライブラリの更新です。この部分はセキュリティ・ホールに関連しますので、是非新たに始める方は Raspbian 9(Stretch)をご利用の上、そのレシピをご参照ください。Raspbian 8(Jessie)対応のdv_apも最新版が提供されています。但し、Raspbian 8(Jessie)をお使いの場合と、Raspbian 9(Stretch)の場合でインストール・アップデートの方法・条件及びアプリがそれぞれ専用となります。 (2017.10.02)
=MEMO= アップグレードが頻繁に行われています。
(2018.1.24現在 Jessie dv_ap V00.77 / Stretch dv_ap V00.74
$ sudo apt-get update
$ sudo apt-get upgrade dv-ap
  :
WARNING: The following packages cannot be authenticated!
  dv-ap
Install these packages without verification? [y/N] y

=MEMO= dv_ap V00.60にて再度スマートフォンのテザリングWi-Fiによるテストを行ったところ、時々信号が通らないことも有りましたが、実用上問題ない程度に改善されておりました。最下部にその場合の設定やテザリングとホームWi-Fiの自動切り替えなどについて記載致しましたのでご参照ください。
(2017.06.08 追記) dv_ap 00.64以降Wi-Fiでの運用が全く問題なくスムーズに長時間行える事を八日間のモバイル運用で実証されました。(実質途切れたのはdocomo[mopera U]の圏外のみ)

ハードウェアの準備

  1. DVAPは、DVAP純正のソフトウェア DVAPTool で使用できていた物ならそのまま使用できます。 ケーブルは、タイプA<==>miniUSB の物が必要になります。

  2. ノードアダプターV7を使われる場合は、ノードアダプターV7(Satoshi Board)による自宅ノードを参照して、ハードウェアの調整を済ませて置いてください。
    また、ノードアダプターとFMアナログ無線機のデータポートを接続するDIN6ピンのケーブルも必要です。USBケーブルはプリンタ用のタイプA<==>タイプBの物となります。

  3. コントローラにはRaspberry Pi3 を使用しました。Wi-Fiモジュールもオンボードなので電源ケーブル以外は何も要りません。勿論、タイプA+やB+、Pi2等も問題なく使えます。 Raspbian Jessie は、Raspbian(Jessie)のインストール for HAM などを参照の上、接続したいルータにケーブル接続できる事を確認しておいてください。(最初はWi-Fi接続できません)

  4. もし、古いRaspberryPi A+,B+,2 等をお持ちの場合は、USBタイプのWi-Fi子機でも全く同じ設定内容で接続できます。私の場合、右写真の子機で、RaspberryPi3で完成したmicroSDカードをPiB+に差し替えるだけで問題なく稼働しました。

  5. WiFi接続したい場合は、Raspberry Pi で複数 Wi-Fi の切り替えをするテキストモードでWi-Fi接続を安定させる(Jessie)を参照してください。

作業環境の構築

今までのように、いきなりリモート(SSH)でと言う訳に行かなくなりました。 セキュリティの為と思いますがデフォルトでは SSH が無効になっています。そこでディスプレイ・キーボードを接続して直接 Raspberry を操作しなければなりません。
  1. ログイン・ユーザ:pi    パスワード: raspberry でログインします。


  2. =MEMO= SSHを有効にした場合は、必ずパスワードを変更してください。 $ sudo raspi-config で変更するか、$ passwd と入力して変更します。

  3. このまま直接 RaspberryPi 上で作業を進めても構いません。今回はWindowsマシンからリモートで操作したいので SSH を有効にします。

  4. $ systemctl list-unit-files
    

    sudo 無しで構いません, [space]でページ送りします。リモートで作業するのに必要なサービスは ssh.service ですが、disable になっているのが分かります。

    サービス名が分かっている時は次の方法でも判別できます。
    $ sudo systemctl is-enabled ssh.service
    disabled
    

    Windowsなど他のマシンからリモート出来るようにsshを有効にします。
    $ sudo systemctl enable ssh.service
    Synchronizing state for ssh.service with sysvinit using update-rc.d...
    Executing /usr/sbin/update-rc.d ssh defaults
    insserv: warning: current start runlevel(s) (empty) of script `ssh' overrides LSB defaults (2 3 4 5).
    insserv: warning: current stop runlevel(s) (2 3 4 5) of script `ssh' overrides LSB defaults (empty).
    Executing /usr/sbin/update-rc.d ssh enable
    Created symlink from /etc/systemd/system/sshd.service to /lib/systemd/system/ssh.service.
    

    再起動すると自動起動しますが、すぐに利用したい時は
    $ sudo systemctl start ssh.service
    

    とします。なお、ここでリモートする場合は、ifconfig でIPアドレスを確認しておいてください。

  5. ソフトウェアがインストール出来るように、また今後アップデートし易いように準備します。

  6. 特定のフォルダ内に、必要なソフトウェアの有り場所を記したリストファイルをダウンロードします。
    $ cd /etc/apt/sources.list.d
    $ sudo wget app.d-star.info/debian/stretch/jarl.list      # Stretchの場合
    $ sudo wget app.d-star.info/debian/jarl.list                # Jessieの場合
    $ ls
    jarl.list  raspi.list
    $ cd
    

    次にキーをダウンロードし、追加します。(Stretchのみ)
    $ sudo wget http://app.d-star.info/debian/stretch/jarl-pkg.key
    $ sudo apt-key add jarl-pkg.key
    

    上(jarl.list)で設定した場所も含めて更新ファイルを検索、アップデートします。
    $ sudo apt-get clean
    $ sudo apt-get update
    $ sudo apt-get upgrade -y
    

    ソフトウェアが一旦インストールされると、上記コマンドでソフトウェアの更新も認識されアップデートされます。

ソフトウェア(dv_ap)のインストールと環境設定

  1. dv_ap をインストールします。

  2. $ sudo apt-get install dv-ap
         :
    Install these packages without verification? [y/N] y
         :
    

  3. いくつかのファイルを、指定のフォルダにコピー又は移動します。

  4. 先ず、ファイルが格納されているフォルダへ入ります。
    $ cd /usr/share/doc/dv-ap
    

    フォルダが、初期には存在しない場合の、配布先フォルダを作成します。
    $ sudo mkdir /opt/dv_ap
    $ sudo mkdir /opt/dv_ap/etc
    $ sudo mkdir /opt/dv_ap/web
    

    次の各ファイルをそれぞれコピーします。
    $ sudo cp 99-dvap.rules /etc/udev/rules.d
    $ sudo cp dv_ap.css dv_ap.js logo.png /opt/dv_ap/web
    $ sudo cp dv_ap.conf.dvap /opt/dv_ap/etc/dv_ap.conf
    $ cd
    

    上の最終行は、DVAPの場合です。ノードアダプターV7の場合は次の様にコピーします。
    $ sudo cp /usr/share/doc/dv-ap/dv_ap.conf.node /opt/dv_ap/etc/dv_ap.conf
    

  5. dv_apの設定ファイル(dv_ap.conf)を編集します。


  6. =MEMO=
    Stretch(Raspbian 9)からLANインターフェースの記述が下記のように変わっています。
    wlan0 ⇨ wlx0022cfea2fba
    もし、互換性の為以前の記述にする必要が有る時は、次のようにしてください。
    $ sudo nano /boot/cmdline.txt
    
      GNU nano 2.2.6               File: /boot/cmdline.txt
    dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait net.ifnames=0
    
    末尾に net.ifnames=0 を追加する


    $ sudo nano /opt/dv_ap/etc/dv_ap.conf
    
      GNU nano 2.2.6               File: /opt/dv_ap/etc/dv_ap.conf
    #########################################
    #                                       #
    #       /opt/dv_ap/etc/dv_ap.conf       #
    #                                       #
    #########################################
    #
    # Basic settings
    #
    TRUST_SERVER=trust.d-star.info
    
    #NODE_CALL=JL3ZBS B
    DVAP_CALL=JL3ZBS A
    GATEWAY_CALL=JL3ZBS A
    DEBUG=1
    DVAP_FREQUENCY=144550000
    
    ###### within -45 and -128
    DVAP_SQUELCH=-90
    
    ###### Calibration frequency within -2000 and 2000Hz
    DVAP_CALIBRATION=100
    
    ###### Auto Calibration 1:ON 0:OFF
    DVAP_AUTO_CALIBRATION=1
    
    # NIC=eth0     # Default
    NIC=wlan0
    
    # Stretchの場合、LANインターフェース名が変わっています。
    # NIC=wlx0022cfea2fba
    
    ###### if port forwarding exists uncomment UPNP=0
    #UPNP=0
    
    ###### sprit the TX/RX frequency
    #DVAP_TX_FREQUENCY=144550000
    #DVAP_RX_FREQUENCY=145550000
    
    #
    # DPRS settings
    #
    APRS_SERVER=d-prs.d-star.info:14580
    APRS_CALLSIGN=JL3ZBS
    RADIO_ID=P
    SEND_INTERVAL=60
    AUTO_RELINK=1
    BEACON_LAT=00.0000
    BEACON_LONG=000.0000
    BEACON_COMMENT=DV_AP D-PRS -> APRS
    BEACON_INTERVAL=1200
    
    #
    # Web Server setting
    #
    HTTP_PORT=8080
    
    #
    # Echo Server setting (dv_ap 00.69 & later)
    #
    ECHO_SERVER=JL3ZBS A:JL3ZBS Z
    ECHO_POSITION_SEND_INTERVAL=3600
    
    #
    # Access Status Server setting (dv_ap 00.69 & later)
    #
    STATUS=status.d-star.info:21050
    
    
    [Ctrl]+[o],[Enter],[Ctrl]+[x]で保存・終了します。

  7. dv_apを自動起動するユニットファイルを作成する。

  8. $ sudo nano /etc/systemd/system/dv_ap.service
    
      GNU nano 2.2.6               File: /etc/systemd/system/dv_ap.service
    [Unit]
    Description=7M3TJZ DV Access Point (DVAP Tool for G1)
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/usr/bin/dv_ap
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    
    

  9. 自動起動を有効にし、確認します。

  10. $ sudo systemctl enable dv_ap.service
    $ sudo reboot
    

  11. 運用ログの表示


  12. =MEMO= 表示の内容は DEBUG=0, 1, 2 のレベルで変更できます。冒頭のメモをご覧ください。
    $ sudo touch /var/log/dv_ap.log
    $ tail -f -n30 /var/log/dv_ap.log
    

    繰り返し現れるメッセージを省く場合
    (aprsに関するメッセージと自動でポートチェックするメッセージ)
    $ tail -f -n30 /var/log/dv_ap.log | egrep -v 'aprsc|M-SEARCH'
    

    WEBで管理する場合は、Raspberry Piが接続されているルータの外側のアドレス(同じLAN上で管理する場合は Raspberry Pi のIPアドレス)に ":8080" を付けて参照する。

スマートフォンのテザリングWi-Fiによるモバイル運用

  1. dv_ap.config の変更

  2. #UPNP=0 と設定されている一行のコメントアウトマーク(#)を外し UPNP=0 とする。これはUPNPがゼロ(使用しない)という意味になります。

  3. スマートフォンに、外部グローバルアドレスから dv_ap が稼働しているローカルアドレスへポートフォワードするためのアプリをインストールする。

  4. Port Fowarder(G Herbst)

    他にもいろいろ有りますが、私はこれにしました。

  5. Port Fowarder の設定
    • スパナの形をした[ツールアイコン]をタップします。
    • IP Settings]をタップします。
    • Target IP]をタップして、dv_apが稼働している Raspberry Pi のIPアドレスを入力して[OK]します。
    • Public Intarface]を選択して rmnet_data0を選択したら、[戻る]をタップしてメイン画面にします。
    • (+)ボタンの形をしたアイコンをタップして、次の2ポートを追加します。
    • incoming Port on this Device400008080
      Port on Target Device400008080
      ProtocolUDPTCP
      スマホの外側からではなく、http://192.168.xx.yy:8080 の様に内部アドレスで参照する場合は、8080 TCPの設定は不要です。
    •    START   をタップしてフォワーディングを開始します。

    これで、ホームルータに於いて、手動でポートフォワードしているのと同様の設定(スマホをアプリによってルータとして設定)をしている事になります。

  6. テザリングWi-FiとホームルータによるWi-Fiを自動切り替えしたいような場合

  7.  通常、Raspbian Jessie を立ち上げると dhcpcd.serviceが自動的にIPアドレスを取りに行き、固定にする場合は /etc/dhcpcd.conf に固定アドレスを指定するなどします。ただ、今回のような場合固定アドレスは使用できません。その様な場合 dhcpcd では接続できない状況が発生したり、不安定になったりします。
     そこで、dhcpcd.service は無効にして別の方法を使うと、家の近く50から100mくらいまではホームルータに接続していて、それ以上離れるとスマホテザリングに自動接続します。
     詳しくは、テキストモードでWi-Fi接続を安定させる(Jessie)をご覧ください。

    このケースでは、テザリングWi-Fi側でもホームルータ側でも、dv-ap.confの内容が同じで行けるように「既存のポートフォワード有り(UPNP=0)」で統一しています。

     理由は、スマホ側では uPnP によるポート設定が出来ない為、必然的に UPNP=0 にならざるを得ないからです。
     次に、このような UPNP=0 であっても、DHCPで取得したアドレスに対してポートフォワードを自動設定する方法(dv_apが行っているのと同じ方法)と、自動起動について説明します。

    • 先ず、UPnPの機能を使ってdv_apの機能(#UPNP=0の時動作)としてではなく、別途あたかも手動で既存設定が有ったかのように前もってポートフォワードを準備します。その為、次のプログラムを前もってインストールして置きます。(2017.07.11 追記)

    • $ sudo apt-get install miniupnpc
      
      $ upnpc -l                                    ポートフォワードの一覧
      $ upnpc -a 192.168.10.100 40000 40000 udp     対象アドレス 対象ポート 外側ポート プロトコル
      $ upnpc -d 40000 udp                          ポートフォワードを削除
      

    • ユニットファイルを三つ作ります。まず一つ目はポートフォワードの設定を起動するファイルです。

    • $ sudo nano /etc/systemd/system/pforward.service
      
        GNU nano 2.2.6               File: /etc/systemd/system/pforward.service
      [Unit]
      Description=uPnPc Port Forward Setting
      
      [Service]
      Type=simple
      ExecStart=/usr/local/bin/pforward
      Restart=on-failure
      
      [Install]
      WantedBy=Multi-user.target
      
      

      更にサービスによって起動される設定用のスクリプトです。

      $ sudo nano /usr/local/bin/pforward
      
        GNU nano 2.2.6               File: /usr/local/bin/pforward
      #!/bin/sh
      
      ### Stretch
      IPADDR=`ifconfig enxb827ebdabb1c | awk '/inet / {print $2}'`
      
      ### Jessie
      # IPADDR=`ifconfig wlan0 | awk '/inet / {print $2}' | awk -F: '{print $2}'` 
      
      echo $IPADDR
      upnpc -d 8080 tcp
      upnpc -d 40000 udp
      upnpc -a $IPADDR 8080 8080 tcp
      upnpc -a $IPADDR 40000 40000 udp
      
      [Ctrl]+[o],[Enter],[Ctrl]+[x]で保存し終了します。

      $ sudo chmod +x /usr/local/bin/pforward
      $ sudo systemctl start pforward.service
      $ upnpc -l
      
      実行可能ファイルに設定して、start した後、リストアップコマンドで確認します。

    • 次に、dv_apを立ち上げるユニットファイルを作成します。

    • $ sudo nano /etc/systemd/system/dv_ap.service
      
        GNU nano 2.2.6               File: /etc/systemd/system/dv_ap.service
      [Unit]
      Description=7M3TJZ DV Access Point (DVAP Tool for G1)
      After=systemd-networkd.service
      Wants=pforward.service
      
      [Service]
      Type=forking
      ExecStart=/usr/bin/dv_ap
      Restart=on-failure
      
      

      Wants= に示されるサービスは、このdv_ap立ち上げに欲しいサービスです。同様に必要なサービスの場合、Requires= という表現が有りますが、 この場合、pforward.service が失敗するとこのサービスも失敗します。つまり、テザリングの場合uPnPは失敗しますので dv_ap も立ち上がらなくなります。

    • 三つ目に dv_ap の立ち上がるタイミングを採るファイルです。

    • $ sudo nano /etc/systemd/system/dv_ap.timer
      
        GNU nano 2.2.6               File: /etc/systemd/system/dv_ap.timer
      [Unit]
      Description=dv_ap Start delay timer
      
      [Timer]
      OnBootSec=60sec          # or 1min
      #Unit=dv_ap.service
      
      [Install]
      WantedBy=timers.target
      
      

      ブートアップしたタイミングから30秒後に、Unit= で締めしたサービスを実行します。但し、ファイル名が同じ場合(dv_ap.service と dv_ap.timer)記載する必要は有りません。
      また、通常 .service ファイルには [Install] セクションが無いと起動しませんが、今回のようにタイマーを設定する場合、そちらのファイルに存在すれば不要です。

      $ sudo systemctl enable dv_ap.timer
      

      タイマー用のファイルのみ自動起動(enable)に設定します。これで dv_ap.timer が 30秒後に dv_ap.service を立ち上げ、その中で pforward.service が呼ばれます。

    これで、リブートすればテザリングWi-FiでもホームルータのWi-fiでも自動に立ち上がります。また、モバイル運用から自宅に戻り、スマホのテザリングをOFFにするだけで自動的にホームWi-Fiへの切り替えもできます。

    73 J E 3 H C Z

Back