1 个不稳定版本
0.1.0 | 2021年2月20日 |
---|
#14 in #discover
61KB
1.5K SLoC
Rust 电力线通信管理库
这是一个实验性的 Rust 库,用于发现 PLC 设备并管理它们,还包括一个使用该库的命令行工具。
当前支持的协议
- HomePlug AV 1.1/2.0 (Ethertype 0x88e1)
- Broadcom/Gigle 协议 (Ethertype 0x8912, "Mediaxtream"?)
这些协议是第二层(数据链路)协议,因此需要发送和接收原始以太网帧的能力。此库具有跨平台层,以高效地实现这一功能。
当前支持的操作系统
- Linux(使用 AF_PACKET 套接字)
- macOS(使用 /dev/bpf 设备)
库的核心是 no_std
,以便在资源有限的设备(如路由器)中使用。
基于高通/atheros 的设备
这些设备似乎实现了 HomePlug AV 规范中记录的所有 HomePlug AV H1 管理帧。它们还有许多由高通在 open-plc-utils 中实现的供应商扩展。
测试设备
- QCA7420 - Netcomm NP505F(500Mbps HomePlug AV 1.1)
Broadcom/Gigle 设备
虽然这些设备似乎与其他 HomePlug AV 设备在电力线级别上具有互操作性,但它们对 H1 管理帧的支持有限。它们似乎在 ethertype 0x8912 上公开了大多数功能,这似乎是 Gigle/Mediaxtream 的遗留功能。
测试设备
- BCM60355 - D-Link DHP-601AV(1000Mbps HomePlug AV 2.0)
资源
命令行工具
使用此工具可能需要 root 权限!
用法
powerline [FLAGS] [OPTIONS] [SUBCOMMAND]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
-v Increase verbosity
OPTIONS:
--interface <interfaces>... Select the interface(s) to discover with
SUBCOMMANDS:
find Find which interface a specific device is reachable
help Prints this message or the help of the given subcommand(s)
scan Discover and list devices
set-name Set the name of a device
构建并安装到 ~/.cargo/bin
cargo install --example powerline --path .
示例输出
$ powerline
eth0: [60:63:4c:11:22:33] HPAV2.0 Broadcom 3Ethers 'Lounge'
eth0: [60:63:4c:44:55:66] HPAV2.0 Broadcom 5Ethers 'Gateway'
eth0: [00:60:64:77:88:99] HPAV1.1 Qualcomm 8Ethers 'Upstairs'
输出显示在 eth0 网络接口上发现了三个 HomePlug AV 设备。
两个是 Broadcom 的 HPAV2.0 设备,一个是高通的 HPAV1.1 设备。
XEthers 字段显示了由 HPAV 设备桥接的以太网设备数量。
最后引号内的文本是设备的友好名称。
依赖项
~130KB