MeshTNCは、消費者向けLoRa無線機をKISS TNCに対応させるためのツールです。

2026/02/22 5:14

MeshTNCは、消費者向けLoRa無線機をKISS TNCに対応させるためのツールです。

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

## 改訂版まとめ

MeshTNC は、アマチュア無線愛好家が使用するようなコンシューマーグレードのラジオを使って、LoRa パケットを簡易シリアルインターフェース経由で送受信できる軽量ソフトウェアツールです。GitHub(リポジトリ:datapartyjs/MeshTNC)にホストされており、事前コンパイル済みのファームウェアリリースが付属しています。フラッシュは MeshCore の Web フラッシャー(http://flasher.meshcore.co.uk/)またはその他の OEM ツールを使用して行うことができ、MeshCore Flasher に一覧表示されている任意のデバイスで動作します。デフォルトのシリアルボーレートは 115200 です。

このツールは以下のようなコマンドラインインターフェースを公開しています:
- `txraw <hex…>` – 生の LoRa バイトを送信  
- `rxlog on/off` – 受信パケットのログ取得  
- `rxlog ble on/off` – BLE スニッフィングの有効化  
- `serial mode kiss` – APRS/AX.25 互換性のため KISS‑TNC モードへ切替  
- `set radio …`, `get radio …`, `reboot`, `clock sync`, `start ota`, `set/get txpower`, AGC, stats など

KISS モードでは、ラジオを任意の周波数に調整し、その後 APRS ソフトウェア(例:xastir、APRSisce32)で使用できます。LoRa 上の AX.25 は `/etc/ax25/axports` を設定し、`kissattach /dev/ttyACM0 0` を実行することでサポートされ、その後仮想インターフェースに IP アドレスを割り当てることができます(例:`ip addr add 10.10.10.10/24 dev ax0`)。

複数のマシンは `tncattach` を使って Ethernet‑over‑LoRa 接続を作成できます。例えば:

sudo tncattach --mtu=230 -e -noipv6 --ipv4=/24 /dev/ttyACM0 115200


これらの低レベル制御と事前構築済みファームウェアを提供することで、MeshTNC はホビイスト、アマチュアオペレーター、および開発者がメッシュネットワークを構築し、APRS のカバレッジを拡張したり、LoRa 上で IP トラフィックをルーティングすることを可能にし、遠隔地やサービスが十分ではない地域の接続性を向上させます。

本文

MeshTNC

MeshTNC は、コンシューマーグレードのラジオを介して LoRa データを送受信するためのツールです。


主な機能

  • ファームウェアに組み込まれたシンプルなシリアル CLI
  • シリアル CLI 経由で LoRa に生データ(16進)を送信
  • LoRa パケットのシリアルログ(16進)
  • BLE パケットスニッフィング
  • KISS‑TNC モード

コンパイル方法

  1. Visual Studio Code へ PlatformIO をインストール。
  2. MeshTNC リポジトリをクローンし、開く。
  3. 例示アプリケーションの一つ(例えば Simple Repeater)を修正して実行。

フラッシュ方法

事前にコンパイルされたファームウェアは https://github.com/datapartyjs/MeshTNC/releases からダウンロードしてください。
専用フラッシャーはまだ無いので、以下のいずれかを使用します。


ハードウェア互換性

MeshTNC は MeshCore がサポートするデバイス用に設計されています。
MeshCore Flasher のサポートリストを確認し、ほとんど同じハードウェア変種に対応しています。


シリアル CLI

ファームウェアは人間が読めるシリアルモードで起動します。ターミナル(例:

minicom
)で接続してください。

minicom -b 115200 -D /dev/ttyACM0

Linux でデフォルトボーレートを設定するには:

stty -F /dev/ttyACM0 115200

CLI コマンド

新規/拡張コマンド

  • txraw <hex…> – パケットを送信
  • get syncword <word> – 同期語設定を読み取り
  • set kiss port <port> – KISS デバイスポートを設定
  • set radio <freq>,,,,<syncword> – ラジオを構成
  • serial mode kiss – KISS モードへ切替
  • rxlog on/off – LoRa パケットログの有効化/無効化
    • 出力形式:
      [timestamp],[type=RXLOG],[rssi],[snr],[hex…]\n
  • rxlog ble on/off – BLE パケットログの有効化/無効化
    • 出力形式:
      [timestamp],[type=RXBLE],[rssi],[snr],[MAC‑6octets][hex…]\n
  • get ble – BLE 設定をダンプ
  • set ble <active_scan>,<filter_dups>,<max_results>,<scantime>
    • active_scan
      : on/off(デフォルトは off)
    • filter_dups
      : on/off(デフォルトは on)
    • max_results
      : スキャンあたりの最大結果数
    • scantime
      : ミリ秒単位でスキャン時間
  • set/get txpower – MeshCore の set/get tx をリネーム

既存コマンド

reboot
clock sync
start ota
clock
time
tempradio
clear stats
get af
get agc.reset.interval
get name
get lat
get lon
get radio
get rxdelay
get txdelay
get freq
set af
set int.thresh
set agc.reset.interval
set name
set radio
set lat
set lon
set rxdelay
set txdelay
set freq
erase
ver
log start
log stop
rxlog on
rxlog off

KISS モード

KISS モードでは LoRa ラジオを KISS モデムに変換し、APRS や Linux カーネル等の既存ソフトウェアと互換性があります。

有効化

serial mode kiss

終了

KISS の終了シーケンスを送信:

echo -ne '\xC0\xFF\xC0' > /dev/ttyUSBx

(

ttyUSBx
を自分のシリアルポートに置き換えてください。
stty
で正しいボーレートを設定してください。)


APRS over LoRa

  1. 周波数を設定し、KISS モードへ入る:
    set radio 918.25,500.0,7,5,0x16
    serial mode kiss
    
  2. minicom
    等のターミナル経由で APRS ソフトウェア(例: Xastir、APRSisce32)をデバイスに接続。

AX.25 over LoRa

クイックスタート

  1. MeshTNC を Linux システムに接続。

  2. CLI でラジオ設定。

  3. KISS モードへ入れ、ターミナルプログラムからシリアルポートを解放。

  4. /etc/ax25/axports
    を編集:

    0 AL1CE-1 115200 220 2 AX25 test
    

    AL1CE-1
    は自分のコールサイン+SSIDに置き換えてください。

  5. 接続:

    kissattach /dev/ttyACM0 0
    
  6. インターフェース作成を確認:

    sudo dmesg | grep mkiss
    
  7. IP アドレスを割り当て(例):

    ip addr add 10.10.10.10/24 dev ax0
    

Ethernet over LoRa

  1. tncattach
    をクローンしてインストール:

    git clone https://github.com/markqvist/tncattach.git
    cd tncattach && make && sudo make install
    
  2. 各マシンでラジオ設定し、KISS モードへ入る:

    set radio 916.75,500.0,5,5,0x16
    serial mode kiss
    
  3. 最初のマシン:

    sudo tncattach --mtu=230 -e -noipv6 --ipv4=10.10.10.10/24 /dev/ttyACM0 115200
    
  4. 二番目のマシン:

    sudo tncattach --mtu=230 -e -noipv6 --ipv4=10.10.10.11/24 /dev/ttyACM0 115200
    

同じ日のほかのニュース

一覧に戻る →

2026/02/22 9:29

**Claude コードの使い方:計画と実行の分離**

## 日本語訳: 記事は約9か月の経験に基づくClaude Codeを使用するための規律あるワークフローを提示しています。研究、計画、および実行を分離し、各フェーズが進む前に承認済みのマークダウンアーティファクトを生成することを強調しています。 1. **リサーチ (research.md)** – Claude は対象フォルダーを徹底的にスキャンし、ユーザーが検証しなければならない詳細レポートを作成します。表面的な読み込みは推奨されません。 2. **計画 (plan.md)** – コードスニペット、ファイルパス、トレードオフ、および説明を含む別のマークダウン計画が用意されます。組み込みのプランモードは拒否され、この編集可能なドキュメントが採用されます。 3. **注釈サイクル** – ユーザーはエディタで計画をレビューし、インラインメモや制約を追加して「まだ実装しない」ガード付きで再送します。このサイクルは計画が完全に受理されるまで繰り返されます。 4. **実行** – 実装前に詳細なTODOリストが計画に追加されます。その後、著者は固定プロンプト「implement it all…」を発行し、Claude にすべてを実行させ、計画内の完了状況を更新させ、不必要なコメントや未知のタイプを避け、型チェックを継続的に実行させます。 5. **修正** – 実行中にユーザーは簡潔な修正(多くの場合単一文)を提供します。フロントエンドでの修正にはスクリーンショットや既存パターンへの参照が含まれる場合があります。 6. **制御と永続性** – 著者はアーキテクチャ的なコントロールを決して手放しません。Claude の提案を評価し、必要に応じて変更またはスキップします。3つのフェーズすべてが単一の長時間セッションで行われ、計画ファイルは自動圧縮を通じて保持され、主要な参照として機能します。 マークダウンファイルを共有可変状態として維持することで、このアプローチはノイズの多いチャットインタラクションを減らし、追跡性を向上させ、大規模プロジェクト全体で一貫したインターフェースを保ちます。

2026/02/22 9:21

**回答** 実際には、ほとんどの最新コンパイラは「決定的(deterministic)」です。 同じソースコードと同一のコンパイルオプション(使用するコンパイラのバージョンや基盤となるプラットフォームを含む)を与えれば、何度実行しても同一のオブジェクトファイルまたはバイナリが生成されます。 ただし、いくつか注意すべき点があります。 | 要因 | 決定性への影響 | |------|----------------| | **コンパイラ実装** | よく設計されたコンパイラは決定的ですが、不具合のあるものではそうでない場合もあります。 | | **ビルド環境** | OS、CPU アーキテクチャ、またはライブラリのバージョンが異なると、ソースコード自体に変更がなくても出力が変わることがあります。 | | **非決定的なパス** | 例としてランダム化されたレジスタ割り当てなど、一部の最適化は性能調査のために意図的にばらつきを導入します。 | | **タイムスタンプ/ビルドメタデータ** | バイナリにはしばしばタイムスタンプやビルド識別子が埋め込まれます。 これを削除(例:GCC/Clang の `-Wl,--build-id=none`)すると、バイト単位で完全に同一の出力が得られます。 | したがって、環境を統制し安定したコンパイラリリースを使用すれば決定的な結果が期待できます。 セキュリティや監査目的で確実な再現性が必要な場合は、**Reproducible Builds** のようなツールを使い、非決定的データを除去する手順を踏むと良いでしょう。

## Japanese Translation: 記事は、ソフトウェアビルドにおける真の決定論が実現しづらい理由を説明しています。入力状態のすべての部分―ソースコード、コンパイラフラグ、ツールチェーンバイナリ、環境変数、ファイルシステムレイアウト、ロケール、クロック、カーネル動作、さらにはハードウェア並列性までも―を完全に指定しなければ、「ノイズ」が出力の漂移を引き起こします。 再現可能ビルドの実践は、ツールチェーンを凍結し、タイムスタンプを正規化(`SOURCE_DATE_EPOCH`)、揮発性メタデータを除去し、`-ffile-prefix-map` でパスを標準化し、ヘルミティックコンテナ内でビルドし、アーカイブを決定的に作成(`ar -D`)することでこれらの問題を緩和します。そうしても、GCC 18574 のようなバグが示すように、内部ポインタハッシュの不安定性は同一ソースから生成されるコードを変化させる可能性があります。 コンパイラ契約はビット単位での同一性ではなく、セマンティクス(観測可能な I/O、揮発性アクセス、アトミック保証)の保持に焦点を当てています。不定動作がこの保証を弱めるため、再現可能ビルドはより厳格な要件となります。`__DATE__/__TIME__` のようなエントロピー源、デバッグ情報内の絶対パス、ロケール依存のソート(`LC_ALL`)、並列ビルドの競合順序、ランダムシード、ネットワークフェッチはすべて再現性を破る要因となり得ます。ASLR がコンパイラパスに間接的に影響することも同様です。 歴史的には、2013 年以降の Debian の再現可能ビルド取り組みが、同一ソースから同一アーティファクトを作ることを主流化し、コンパイラ・リンカ・パッケージング・ビルドシステム全体で意図的な設計が必要であることを示しています。 将来に向けて、記事は LLM で支援される開発チームが決定論的検証ゲート―制約付き入力、テスト可能な出力、再現性のある CI パイプライン―を導入して信頼できるデプロイを確保する必要があると主張しています。完全な決定論は必須ではありませんが、予測可能な振舞いと検証可能性は本番システムに不可欠です。 主要な結論は、多くのエコシステムが多くの境界ケースで意図的な取り組みを通じて再現可能ビルドをサポートしているということですが、Ken Thompson の「Reflections on Trusting Trust」からの根本的な警告は残ります―コンパイラは信頼できるように見えても妥協され得るのです。

2026/02/22 5:57

**HN掲示:NVMe→GPU バイパスでCPUを経由せず、単一のRTX 3090上でLlama 3.1 70B を動作させる**

## Japanese Translation: **NTransformer** は、依存関係のない軽量 C++/CUDA エンジンであり、ユーザーが PCIe 上でモデル層をストリーミングし、オプションで高速直接 I/O 用に NVMe を使用することで、70 B 変種を含むフルサイズ Llama モデルをコンシューマ GPU 上で直接実行できるようにします。 - **Resident mode(レジデントモード)**:Llama 3.1‑8 B Q8_0 は 10 GB の VRAM だけで 48.9 トークン/秒を達成し、tiered‑auto モードは 10.3 GB を使用して 48.8 トークン/秒を提供します。 - **70 B model(70 B モデル)**:ストリーミング(mmap)のみでは非常に遅く (0.006 トークン/秒、7.3 GB)、tiered auto はスループットを 0.2 トークン/秒まで向上させ、23.1 GB を消費します。Q4_K_M のレイヤー・スキップを使用すると速度が 0.5 トークン/秒に上昇し、わずか 22.9 GB で済みます。これは単一 RTX 3090 + 48 GB RAM システムでのプレーン mmap に対して 83 倍速です。 - **Bandwidth bottleneck(帯域幅ボトルネック)**:PCIe Gen3 x8 (~6.5 GB/s) がデータ転送を制限します。Q4_K_M は VRAM に 10 層多く収容でき (36 層対 26 層)、tier‑B 転送が削減され、スループットが向上します。 - **Layer‑skip(レイヤー・スキップ)**:コサイン類似度キャリブレーションを使用して、1 トークンあたり 20–80 層を最小限の品質低下でスキップし、大規模モデルの推論速度を向上させます。 - **Architecture(アーキテクチャ)**:3 タイヤの適応型キャッシュが VRAM‑resident、ピン留め RAM、および NVMe/mmap タイヤを自動的にサイズ決定します。エンジンはすべての GGUF 量子化 (Q4_0, Q8_0, Q4_K_M, Q5_K, Q6_K, F16, F32) をサポートし、レジデント、tiered‑auto、layer‑skip、および self‑speculative decoding の 4 種類の自動選択データパスを提供します。 - **System requirements(システム要件)**:Linux (Ubuntu kernel 6.17+)、CUDA 13.1、gcc‑14/g++‑14、CMake 3.24+、NVIDIA GPU CC 8.0+ (RTX 3090 テスト済み)。直接 I/O 用に別の PCIe スロットに NVMe SSD が必要です。セットアップスクリプトはカーネルモジュールをパッチし、AMD IOMMU を無効化し、NVMe を VFIO にバインドします(DMA 分離について注意)。 - **NVMe‑direct pipeline(NVMe 直接パイプライン)**:各層 (~670 MB for 70 B Q6_K) は約 202 ms の NVMe コマンドで CUDA‑ピン留めステージングメモリに読み込まれ、非同期 DMA により GPU バッファへ転送され、デュアルバッファ間で計算と重ね合わせて実行されます。 - **Roadmap(ロードマップ)**:完成済みフェーズ—基盤、SLEP ストリーミング、最適化、NVMe direct。今後の作業には speculative decoding の仕上げと公開 C API の追加が含まれます。 NTransformer は、大規模モデルをコストの高いサーバーインフラなしでコンシューマ GPU 上にローカル実行できるようにすることで、推論コストを低減し、オンプレミス AI サービスのレイテンシを削減し、研究・産業界全体での採用拡大を促進します。