tweliter モジュールは、TWELITE のファームウェアを書き込むためのPythonモジュールです。PyPIからインストールでき、コマンドラインツールとして使用できるほか、Pythonスクリプトから制御することもできます。セクションの複数ページをまとめています。 印刷またはPDF形式で保存...
Pythonによるファームウェアの書き込み
1 - Pythonによるファームウェアの書き込み
tweliterモジュールは、現在ベータ版です。概要
tweliter モジュールは、TWELITE のファームウェアを書き込むためのPythonモジュールです。
PyPIからインストールでき、コマンドラインツールとして使用できるほか、Pythonスクリプトから制御することもできます。
インストール方法
PyPIからインストールしてください。
pip install tweliter
Poetryなら
poetry add tweliter
Linux における追記事項
udevルールの設定
udevによって権限を与える必要があるかもしれません。
/etc/udev/rules.d/99-ftdi.rulesを作成します
# TWELITE R / MONOSTICK (FT232R / 0403:6001)
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE="0666"
# TWELITE R2 / R3 (FT230X / 0403:6015)
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015", MODE="0666"
- udev ルールを更新します
 
sudo udevadm control --reload-rules
sudo udevadm trigger
また、TWELITE STAGE アプリでは ftdi_sio モジュールのアンロードが必要ですが、Pythonで使用する際はこれをロードする必要があります。
modprobe usbserial
modprobe ftdi_sio
Windows における追記事項
libusbドライバの適用
No backend available といったエラーを発する場合は、libusb-win32 ドライバを適用することで解消できるかもしれません。Zadigを導入し、TWELITE R や MONOSTICK を選択したうえで libusb-win32 (WinUSBでない)を適用してください。
参考:Installation — PyFtdi documentation(
pyftdiモジュールを使用しています)
使用例
コマンドラインツールとして
tweliter に続いて、バイナリファイル(.bin)を指定します。
tweliter dir/SomeApp_BLUE.bin
コマンドラインオプション
tweliter -h
usage: tweliter [-h] [-u URL] [-t TYPE] [-g] [-v] [-s] [-m STARTMSG] [-r RETRY] [--clear] [file]
Write TWELITE series firmware
positional arguments:
  file                  Firmware file to write (not required with --clear)
options:
  -h, --help            show this help message and exit
  -u URL, --url URL     Optional device URL starting with ftdi://
  -t TYPE, --type TYPE  Device type(s), comma-separated. e.g., TWELITE_R3,MONOSTICK
  -g, --gold            Select GOLD series
  -v, --verify          Verify firmware after writing
  -s, --safe            Safe mode (GOLD series only, write slowly)
  -m STARTMSG, --startmsg STARTMSG
                        Prefix for startup message to check
  -r RETRY, --retry RETRY
                        Retry count in case of firmware writing failure
  --clear               Clear application NVM memory (GOLD only)
uurl:FTDIデバイスを指定するためのURLを指定できます- 未指定では、接続されたFTDIデバイスが一点なら自動選択、複数なら選択を促します
 
ttype:複数のデバイスを絞り込むための種別を指定できます- カンマ区切りで指定します。例えば 
TWELITE_R3,MONOSTICKなど。 
- カンマ区切りで指定します。例えば 
 ggold:GOLDシリーズを指定しますvverify:書き込み後に検証を行いますssafe:(GOLDシリーズのみ)転送速度を下げるセーフモードを適用しますmstartmsg:完了後、指定したテキスト以降の起動メッセージを捕捉して表示します- デフォルトは 
!INFとしています 
- デフォルトは 
 rretry:書き込みに失敗したときに指定した数のリトライを行います- 未指定では、2回までリトライします
 
clear:(GOLDシリーズのみ)不揮発性メモリの値を消去します(設定値など)
スクリプトから
Tweliteクラスのインスタンスを利用してください。
from pathlib import Path
from tweliter import Tweliter
file = Path("firmware/SomeApp_BLUE.bin")
try:
    with Tweliter(
        type_filter=Tweliter.Type.TWELITE_R2 | Tweliter.Type.TWELITE_R3
    ) as liter:
        # Get serial interface
        ser = liter.get_serial_instance()
        # Write firmware
        liter.write(ser, file, verify=True)
        # Show startup message
        print(liter.get_startup_message_after(ser, "!INF"))
except IOError as e:
    print(f"Couldn't connect {e}")
except RuntimeError as e:
    print(f"Failed to write {e}")
2 - Pythonによるファームウェアの書き込み
tweliterモジュールは、現在ベータ版です。概要
tweliter モジュールは、TWELITE のファームウェアを書き込むためのPythonモジュールです。
PyPIからインストールでき、コマンドラインツールとして使用できるほか、Pythonスクリプトから制御することもできます。
インストール方法
PyPIからインストールしてください。
pip install tweliter
Poetryなら
poetry add tweliter
Linux における追記事項
udevルールの設定
udevによって権限を与える必要があるかもしれません。
/etc/udev/rules.d/99-ftdi.rulesを作成します
# TWELITE R / MONOSTICK (FT232R / 0403:6001)
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE="0666"
# TWELITE R2 / R3 (FT230X / 0403:6015)
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015", MODE="0666"
- udev ルールを更新します
 
sudo udevadm control --reload-rules
sudo udevadm trigger
また、TWELITE STAGE アプリでは ftdi_sio モジュールのアンロードが必要ですが、Pythonで使用する際はこれをロードする必要があります。
modprobe usbserial
modprobe ftdi_sio
Windows における追記事項
libusbドライバの適用
No backend available といったエラーを発する場合は、libusb-win32 ドライバを適用することで解消できるかもしれません。Zadigを導入し、TWELITE R や MONOSTICK を選択したうえで libusb-win32 (WinUSBでない)を適用してください。
参考:Installation — PyFtdi documentation(
pyftdiモジュールを使用しています)
使用例
コマンドラインツールとして
tweliter に続いて、バイナリファイル(.bin)を指定します。
tweliter dir/SomeApp_BLUE.bin
コマンドラインオプション
tweliter -h
usage: tweliter [-h] [--url URL] [--verify] [--startmsg STARTMSG]
                [--retry RETRY]
                file
Write TWELITE BLUE/RED firmware
positional arguments:
  file                 Firmware file to write
options:
  -h, --help           show this help message and exit
  --url URL            Device URL starting with ftdi://
  --verify             Verify firmware after writing
  --startmsg STARTMSG  Prefix for startup message to check
  --retry RETRY        Retry count in case of firmware writing failure
url:FTDIデバイスを指定するためのURLを指定できます- 未指定では、接続されたFTDIデバイスが一点なら自動選択、複数なら選択を促します
 
verify:指定すると、書き込み後にベリファイを行いますstartmsg:完了後、指定したテキスト以降の起動メッセージを捕捉して表示します- デフォルトは 
!INF MONO WIRELESSとしています 
- デフォルトは 
 retry:数を指定すると、書き込みに失敗した際にその数だけリトライします。- 未指定では、2回までリトライを行います
 
スクリプトから
Tweliteクラスのインスタンスを利用してください。
from pathlib import Path
from tweliter import Tweliter
file = Path('dir/SomeApp_BLUE.bin')
try:
    with Tweliter(url="ftdi://:ft-x:/1") as liter:
        # Get serial interface
        ser = liter.get_serial_instance()
        # Write firmware
        liter.write(ser, file, verify=True)
        # Show startup message
        print(liter.get_startup_message_after(ser, "!INF MONO WIRELESS"))
except IOError as e:
    print(f"Cannot connect {e}")
except RuntimeError as e:
    print(f"Failed to write {e}")
3 - Pythonによるファームウェアの書き込み
tweliterモジュールは、現在ベータ版です。概要
tweliter モジュールは、TWELITE のファームウェアを書き込むためのPythonモジュールです。
PyPIからインストールでき、コマンドラインツールとして使用できるほか、Pythonスクリプトから制御することもできます。
インストール方法
PyPIからインストールしてください。
pip install tweliter
Poetryなら
poetry add tweliter
Linux における追記事項
udevルールの設定
udevによって権限を与える必要があるかもしれません。
/etc/udev/rules.d/99-ftdi.rulesを作成します
# TWELITE R / MONOSTICK (FT232R / 0403:6001)
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE="0666"
# TWELITE R2 / R3 (FT230X / 0403:6015)
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015", MODE="0666"
- udev ルールを更新します
 
sudo udevadm control --reload-rules
sudo udevadm trigger
また、TWELITE STAGE アプリでは ftdi_sio モジュールのアンロードが必要ですが、Pythonで使用する際はこれをロードする必要があります。
modprobe usbserial
modprobe ftdi_sio
Windows における追記事項
libusbドライバの適用
No backend available といったエラーを発する場合は、libusb-win32 ドライバを適用することで解消できるかもしれません。Zadigを導入し、TWELITE R や MONOSTICK を選択したうえで libusb-win32 (WinUSBでない)を適用してください。
参考:Installation — PyFtdi documentation(
pyftdiモジュールを使用しています)
使用例
コマンドラインツールとして
tweliter に続いて、バイナリファイル(.bin)を指定します。
tweliter dir/SomeApp_BLUE.bin
コマンドラインオプション
tweliter -h
usage: tweliter [-h] [-u URL] [-g] [-v] [-s] [-m STARTMSG] [-r RETRY] file
Write TWELITE series firmware
positional arguments:
  file                  Firmware file to write
options:
  -h, --help            show this help message and exit
  -u URL, --url URL     Optional device URL starting with ftdi://
  -g, --gold            Select GOLD series
  -v, --verify          Verify firmware after writing
  -s, --safe            Safe mode (GOLD series only, write slowly)
  -m STARTMSG, --startmsg STARTMSG
                        Prefix for startup message to check
  -r RETRY, --retry RETRY
                        Retry count in case of firmware writing failure
uurl:FTDIデバイスを指定するためのURLを指定できます- 未指定では、接続されたFTDIデバイスが一点なら自動選択、複数なら選択を促します
 
ggold:GOLDシリーズを指定しますvverify:書き込み後に検証を行いますssafe:(GOLDシリーズのみ)転送速度を下げるセーフモードを適用しますmstartmsg:完了後、指定したテキスト以降の起動メッセージを捕捉して表示します- デフォルトは 
!INFとしています 
- デフォルトは 
 rretry:書き込みに失敗したときに指定した数のリトライを行います- 未指定では、2回までリトライします
 
スクリプトから
Tweliteクラスのインスタンスを利用してください。
from pathlib import Path
from tweliter import Tweliter
file = Path('dir/SomeApp_BLUE.bin')
try:
    with Tweliter(url="ftdi://:ft-x:/1") as liter:
        # Get serial interface
        ser = liter.get_serial_instance()
        # Write firmware
        liter.write(ser, file, verify=True)
        # Show startup message
        print(liter.get_startup_message_after(ser, "!INF"))
except IOError as e:
    print(f"Cannot connect {e}")
except RuntimeError as e:
    print(f"Failed to write {e}")