SparkLink ๆ ็บฟ้ไฟกๅ่ฎฎ็ๅฎๆด็จๆทๆๅบ็ก่ฎพๆฝ๏ผๅฏนๆ BlueZ ็ๆถๆ่ฎพ่ฎกใ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Applications โ slctl slkconfig slkmon slkdump โ
โ (REPL) (CLI) (monitor)(dump) โ
โโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโโโโโฌโโโโโโโโโฌโโโโโ
โ D-Bus โ D-Bus โ โ
โโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโโโ โ
Daemon โ slkd โ
โ org.sparklink โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ AdapterIface โ โ
โ โ DeviceIface (per device) โ โ
โ โ SecurityIface โ โ
โ โ SsapManagerIface โ โ
โ โ RemoteServiceIface โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโ
Library โ libsparklink โ
โ Adapter (async, tokio) โโโโโ C FFI (ffi.rs)
โ Error / Event types โโโโโ Python bindings
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโ
Protocol โ slk-protocol โ
โ 99 ioctl wrappers (nix) โ
โ 70+ repr(C) structs โ
โ Generic Netlink constants โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
โ ioctl / chardev
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโ
Linux Kernel (net/sparklink/)
/dev/sparklink
| ็ฑปๅซ | ่กๆฐ |
|---|---|
| Rust | ~5200 |
| Python | ~550 |
| ๆต่ฏ | 55 ไธช (36 Rust + 19 Python) |
| Crate | 7 ไธช |
cargo build --release --workspacesudo make install
sudo systemctl enable --now sparklink# ๆฅ็่ฎพๅคไฟกๆฏ
slkconfig info
# ๆซๆ 5 ็ง
slkconfig scan 5
# ่ฟๆฅ่ฎพๅค
slkconfig connect AA:BB:CC:DD:EE:FF
# ๆฅ็ๅฎๅ
จ็ถๆ
slkconfig security
# ๅๅบ SSAP ๆๅก
slkconfig servicesslctl
slctl> scan on
slctl> devices
slctl> connect AA:BB:CC:DD:EE:FF
slctl> info
slctl> disconnect 0x0001# ็ๆงๆๆไบไปถ
slkmon
# ่ฟๆปค่ฟๆฅไบไปถ
slkmon -t conn
# ่พๅบๅฐๆไปถ
slkmon -o capture.log# ๅๅ
ญ่ฟๅถ+ASCII ่พๅบ
slkdump
# ๅๅงไบ่ฟๅถ่พๅบ
slkdump -r > raw.binๅ
ๆ ธ UAPI ็ปๅฎๅฑใๆไพ 99 ไธช ioctl ๅฝไปค็็ฑปๅๅฎๅ
จๅ
่ฃ
(ๅบไบ nix ๅฎ)๏ผ70+ ไธช repr(C) ็ปๆไฝ (็ป ABI ้ช่ฏไธๅ
ๆ ธไธ่ด)๏ผไปฅๅ Generic Netlink ๅธธ้ๅฎไน (34 commands, 59 attributes)ใ
้ซๅฑๅผๆญฅ APIใAdapter ็ฑปๅๅฐ่ฃ
ไบ่ฎพๅค็ฎก็ใๆซๆใ่ฟๆฅใๅฎๅ
จ้
ๅฏนใSSAP ๆๅกใDLI ไบไปถใPHY ้
็ฝฎ็ญ็บฆ 50 ไธชๆนๆณใๅบไบ tokio AsyncFd ๅฎ็ฐ้้ปๅกไบไปถ่ฝฎ่ฏขใๅๆถๆไพ C FFI ๅฑ (ffi.rs๏ผ20 ไธชๅฏผๅบๅฝๆฐ) ๅ่ชๅจ็ๆ็ sparklink.h ๅคดๆไปถใ
D-Bus ็ฎก็ๅฎๆค่ฟ็จ๏ผไฝฟ็จ zbus 5 ๅจ org.sparklink ๆป็บฟๅ็งฐไธๆด้ฒๅ
ญไธชๆฅๅฃใๆฏๆ TOML ้
็ฝฎ (/etc/sparklink/main.conf)ใsystemd ้ๆใtracing-journald ็ปๆๅๆฅๅฟใ่ฎพๅคๅ่ฟๆฅๅฏน่ฑกๅจไบไปถ้ฉฑๅจไธๅจๆๆณจๅใ
็ฆป็บฟ้ ็ฝฎๅฝไปค่กๅทฅๅ ท๏ผๆไพ 22 ไธชๅญๅฝไปค๏ผ่ฆ็่ฎพๅคไฟกๆฏใDLI ๆงๅถๅจใPHY ๅๆฐใๆซๆใ่ฟๆฅใๅฎๅ จ้ ๅฏนใSSAP ๆๅก่ฏปๅๅ่ฟ็จๆไฝใๅบไบ clap 4 ็ derive APIใ
ไบคไบๅผๆงๅถๅฐ (ๅฏนๆ bluetoothctl)ใๅบไบ rustyline 15 ็ REPL๏ผ้่ฟ D-Bus ไธ slkd ้ไฟก๏ผๆฏๆ 16 ไธชๅฝไปค๏ผๅซ่ชๅจ่กฅๅ จๅๅๅฒ่ฎฐๅฝใ
ๅ่ฎฎๅๆๅจ (ๅฏนๆ btmon)ใไปๅ ๆ ธๆ่ท DLI ไบไปถ๏ผๆฏๆไบไปถ็ฑปๅ่ฟๆปคใ็ปๆๅ่งฃ็ (6 ็งไบไปถ็ฑปๅ)ใhexdump ่พๅบๅๆไปถๅๅ ฅใ
่ฝป้็บงๅธง่ฝฌๅจๅทฅๅ ท (ๅฏนๆ hcidump)ใๆฏๆๅๅ ญ่ฟๅถ+ASCII ๆททๅ่พๅบๅๅๅงไบ่ฟๅถ่พๅบๆจกๅผใ
#include <sparklink.h>
SlkAdapter *adpt = slk_adapter_open("/dev/sparklink");
SciDevInfo info;
slk_device_info(adpt, &info);
printf("Device: %s\n", info.name);
slk_adapter_free(adpt);็ผ่ฏ: gcc app.c -lsparklink -o app
from sparklink import Adapter
with Adapter("/dev/sparklink") as adpt:
info = adpt.device_info()
print(f"Device: {info.device_name}")
adpt.start_scan()
ev = adpt.poll_event()
adpt.stop_scan()ๅฎ่ฃ
: pip install -e bindings/python/
| ๆฅๅฃ | ๅฏน่ฑก่ทฏๅพ | ๅ่ฝ |
|---|---|---|
| org.sparklink.Manager | /org/sparklink | ้้ ๅจๆไธพ |
| org.sparklink.Adapter | /org/sparklink/slk0 | ๆซๆใ่ฟๆฅ็ฎก็ |
| org.sparklink.Device | /org/sparklink/slk0/dev_* | ่ฎพๅคๅฑๆง |
| org.sparklink.Security | /org/sparklink/slk0/security | ้ ๅฏนใๅ ๅฏ |
| org.sparklink.ServiceManager | /org/sparklink/slk0/services | SSAP ๆฌๅฐๆๅก |
| org.sparklink.RemoteService | /org/sparklink/slk0/conn_* | SSAP ่ฟ็จๆๅก |
dpkg-buildpackage -us -ucไบงๅบ: sparklink, libsparklink0, libsparklink-dev ไธไธชๅ
ใ
rpmbuild -ba sparklink.specไบงๅบ: sparklink, libsparklink, libsparklink-devel ไธไธชๅ
ใ
GitHub Actions ๅทฅไฝๆต (.github/workflows/ci.yml) ๅ
ๅซ 7 ไธช job:
check: cargo checktest: cargo testclippy: lint ๆฃๆฅfmt: rustfmt ๆ ผๅผๆฃๆฅcbindgen: C ๅคดๆไปถ็ๆไธ่ดๆง้ช่ฏbuild-release: release ๆๅปบ + artifact ไธไผpython-check: Python ็ปๅฎ่ฏญๆณ้ช่ฏ
้ตๅพชๆ้ชๆๆฏ่็ๆ ๅ:
- T/XS 00001-2025 ๆปไฝๆๆฏ่ฆๆฑ
- T/XS 10002-2025 ๆ้ช้พ่ทฏๆฅๅฃ
- T/XS 10003-2025 ๅฎๅ จ่ง่
- T/XS 20001-2025 ๆฅๅ ฅๅฑ้็จ่ฆๆฑ
- T/XS 20002-2025 SLE ่ง่
- T/XS 50003-2025 SSAP ่ง่
- T/XS 50004-2025 ้ ็ฝฎไผ ่พๅ่ฎฎ