ืื ืืชื Raspberry Pi Zero, ืืฉืจืืงืืช Bluetooth ืืืื ืืชืื ืฆื ืืืจืืื ืืืืฉ ืฉืื Handy Tech Active Star 40. ืืฆืืืช ื-USB ืืืืื ืืช ืืกืคืงืช ืืฉืื. ืืชืืฆืื ืืืืชื ืืืฉื ืืื ืฆื ืขืฆืืื ื-ARM ืขื ืืขืจืืช ืืืคืขืื ืืื ืืงืก, ืืฆืืื ืืืงืืืช ืืืฆื ืืจืืื. ืืชื ืืืื ืืืืขืื / ืืืคืขืื ืืืชื ืืืืฆืขืืช USB, ืืืื. ืืื ืง ืืฉืื ืื ืืืขื ืกืืืืจื. ืืื, ืืื ืืืื ืืืกืชืืจ ืืื ืืขืืงืจืืืช ืื ืืืฉื ืืื ืฉืขืืช, ืืื ืืืฉื ืืื ืืืื.
ืืืืื ืืืื ืฉื ืฆืื ืืจืืื
ืงืืื ืื, ืื ืฉืื ืื ืืืืจื ืืงื. ืืืฉืืจืื ืขื 60 ืื ืืืชืจ ืืืืจืืช ืืืืื ืืขืืืื ืขื ืืืฉื ืฉืืืื ื, 40 ื ืืืื ืื ืฉืืื ืืื ืขื ืืืฉื ื ืืื. ืืขืช ืืฉ ืื ืฆืื ืืจืืื ืืืืืืจืื ืืกืืืจืืคืื ืื ืืืืืืืื, ืืืืจื ืฉืืจื ืฉื 14 ืื 18 ืชืืืื.
ืืขืืจ, ืชืฆืืืืช ืืจืืื ืืื ืื ืืกืืืืืช. ื-40 ืืชืืืื, ืืืฉื, ืืื ืืืชื ืืืืืช ืืืฉืงื ืืื ืืืืฉื ื ืืื ืืืืื 13 ืืื ืฅ'. ืขืืฉืื, ืขื ืืืชื ืืกืคืจ ืฉื ืืืืจืืช, ืื ืืื ืืืืืจืืื ืืกืคืืง ืืื ืฉืชืืื ืืฉืื ืืช ืืชืฆืืื ืืื ืืืืฉื ืื ืืื, ืืื ืืช ืืืืฉื ืื ืืื ืขื ืืฆื.
ืื ืืืืื ืืื ืืืชืจ, ืืื ืื ืขืืืื ืื ืืืื ื ืื ืืืืืืง ืฉื ื ืืืฉืืจืื ื ืคืจืืื ืขื ืืืจืืืื ืฉืื. ืืฉืขืืืืื ืืื ืฉืืืื ืืื ืชืืื ืืช, ืืื ืืืื ืืืืืจ ืฉืืืืฉื ื ืืื ืงืืจืืื ืืืฉื ื ืืื ืืฆืืจื ืืืจืช, ืืื ืกืืช ืืืฆืืืง ืืช ืฉืื, ืฉืื ืืกืชืืจ ืฉืชืฆืืื ืืื ืืืืืจืืช ืฉื 40 ืชืืืื ื ืืื ืขืื ืคืืืช.
ืื ืืืืืจ ืืืื ืืฉืืจืืจ ืืืื ืืืืฉ ืฉืืืืื ืืืื ืืกืืจืช Handy Tech Star. ืขืื ืืฉื ืช 2002, ืืืื ืืงืืื Handy Tech Braille Star 40 ืฉืืืจืจ, ืฉืื ืฉืื ืืืืฃ ืืกืคืืง ืืื ืืฉืื ืืืฉื ื ืืื ืขื ืืื. ืืื ืื ืื ืืชืืื, ืืกืืคืง ืืขืื ื ืฉืืฃ. ืืขืช ืืื ืื ืืืืืฃ ื-Active Star 40, ืฉืืื ืืืขื ืืื, ืืื ืขื ืืืงืืจืื ืืงื ืืฉืืืจืืช.
ืืืืขืื ืื ืฉืืฃ ื ืฉืืจ:
ืืื ืืืืจ ืื ืื ืืืืชืจ ืืืืืืฉ ืืื ืฉืงืข ืืืืื ืฉื ืกืืืจืืคืื (ืจืื KDPV). ืืื ื ืคืชื ืืืฉืจ ืืคืืืคืืจืื ืืืืืช ืืืืจื. ืืชืืจืจ ืฉืื ื ืื ืืืืืืง ืฉื ืกืืืจืืคืื, ืืื ืืืืฉืื ืืืืืื ืืืฉืชืืฉ ืืชื ืืจืืง, ืฉืืชืืื ืืกืืคืง ืืคืืื ืฉืงืข ืืฉืื.
ืืืืจ ืืจืืฉืื ืฉืืืืืจ ืืื ืืื ืืฉืื ืฉื ืืช ื-Raspberry Pi, ืื ืืืฉืจ ืืชืฆืืื ื ืจืืฉื, ืืชืืจืจ ืฉืืืขืื ืฉืกืืจ ืืช ืืชื ืื ืื ืขื ื"ืคืื". ืขืืฉืื, ืื ืืืื ืืื ืจืง โโืืง ืืืชืจ ื-3 ื"ื...
ืืื ืขืืืช ืืืืจ ืขื ืืฉืืจืืจ ืฉื ื-Raspberry Pi Zero, ืฉืืชืืจืจ ืื ืื ืืขืืจ ืขื ืฉืฉื ืืื ืืื ืืชืืืื ืืืคืจืฅ... ืื ืืืื ืืคืืื ืฉืืืฉื. ืืื ืืืืื ืืื ืืื ืขื ืืจืืืก ืืืืจืื ืื ืคื 64 ื'ืืื-ืืืื, ืืืืืืช', ืืฉืจืืงืืช ืืืื Micro USB. ืืื ืืืื ืืืืจ ืืื, ืื ืื ืืืืข, ืืืืจืื ืจืืืื ืขืืจื ืืืืืจ ืืืืื ืืช ืืืคื. ืืื ืขืื ืืื ืืื ืฉืฆืจืื.
ืื ื ืขืฉื ืืฉืืื ืื
ืืื ื-Handy Tech Active Star 40 ืืฉ ืฉืชื ืืฆืืืืช USB ืืืชืงื ืื ืืื ืืงืืืืช. ืืงืืืช ืงืืืคืงืืืช ืขื ืืืืืจ ืืื ืื ืืืืื. ืืืฉืจ ืืืงืืืช ืืืืืจืช, ืืืชืฆืืื ืขืฆืื ืคืืขืืช ืืืืฆืขืืช ืืืืืืช', ืืืืฉื ืืืื ืืืชื ืื ืืกืฃ ืืืงืืืช ืืืืืืช'.
ืื, ืื ืืฉืจืืงืืช ืืืืืืช' ืืืืืจืช ื-Raspberry Pi Zero ืืืืฆื ืืชื ืกืืืจืืคืื, ืืื ืชืืื ืืชืงืฉืจ ืขื ืฆื ืืจืืื ืืืืฆืขืืช ืืืืืืช' ืืืืฆืขืืช
ืืื ืื ืื ืืื. ืคืื ืขืฆืื, ืืชืืจื, ืืืื ืืืฉืช ืืืื ืืจื ื ืืืืฆืขืืช Bluetooth PAN ืืื ืืืฉืืจ ืฉืชืืื ืื. ืืืืชื ืืขืืื ืืช ืืกืืืจืืคืื ืืืืืฉืืื ืฉืื ืืืืช ืืืขืืืื ืืืชืื, ืื ืืขืชืื ืืื ืืชืื ื ืืืชืืื ืืื "ืคืื" ื ืืกืฃ - ืงืืืกื, ืื Zero, ืืืืืืจ ืืืชืจื ื ืืขืื "ืืฉืจืืงืืช" ืืืืืืช'.
BlueZ5 ื-PAN
ืฉืืืช ืชืฆืืจืช PAN ืืืืฆืขืืช
ืขื ืื, ืืชื ืืืื ืืืืืืจ ืื ืืช ืืฉืจืช ืืื ืืช ืืืงืื. ืืืืจ ืฉืงืืื ืืช ืืคืงืืื ืืืชืืืื ืืจื D-Bus ืชืื ืืื ืขืืืื ืืืฆื ืืงืื, ืืื ืืืฆืจ ืืชืงื ืจืฉืช ืืืฉ bnep0 ืืื ืืืืจ ืืฆืืจืช ืืืืืจ ืขื ืืฉืจืช. ืืืจื ืืื, DHCP ืืฉืืฉ ืืืงืฆืืช ืืชืืืช IP ืืืืฉืง ืื. ืืืฆื ืฉืจืช, BlueZ ืืืจืฉ ืฉื ืฉื ืืืฉืืจ ืืฉืจ, ืืืื ืืื ืืืื ืืืืกืืฃ ืืืฉืืจ ืขืื ืืืืืืจ ืื ืืื ืืืืงืืืืช. ืืืืจืช ืืชืืืช ืขืืืจ ืืชืงื ืืืฉืจ ืืืคืขืืช ืฉืจืช DHCP ืืชืืกืคืช ืืกืืืืช IP ืขื ืืืฉืจ ืืื ืืืจื ืืื ืื ืื ืฉื ืืจืฉ.
Bluetooth PAN ื ืงืืืช ืืืฉื ืขื Systemd
ืืืืืจ ืืฉืชืืฉ ื-systemd-networkd ืืื ืืืืืืจ ืืช ืืืฉืจ:
FILE /etc/systemd/network/pan.netdev
[NetDev]
Name=pan
Kind=bridge
ForwardDelaySec=0
FILE /etc/systemd/network/pan.network
[Match]
Name=pan
[Network]
Address=0.0.0.0/24
DHCPServer=yes
IPMasquerade=yes
ืืขืช ืขืืื ื ืืืจืื ื-BlueZ ืืืืืืจ ืืช ืคืจืืคืื ื-NAP. ืืชืืจืจ ืฉืืื ืขืืจ ืจืืืืื ืฉื BlueZ 5.36 ืื ืืืืืื ืืขืฉืืช ืืืช. ืื ืืืืืจ ืืืขื, ืชืงื ืืืชื: ืืื ื (ืืืืข ืืืืื ืืช ืืืื ืื) ืืืจื ืขืืืืจ (ืืคืขืืื ืืืฉื ืืงืืื ืื)
ืืื ืืื ืืฆื
ืืืขืื ื ืืืืช, ืืืืืจ ืืฉืชืืฉ ืืฉืืจืืช Systemd ืืื ืืืคืขืื ืืช ืืกืงืจืืคื ืืืืืืง ืื ืืชืืืช ื ืคืชืจื.
FILE /etc/systemd/system/pan.service
[Unit]
Description=Bluetooth Personal Area Network
After=bluetooth.service systemd-networkd.service
Requires=systemd-networkd.service
PartOf=bluetooth.service
[Service]
Type=notify
ExecStart=/usr/local/sbin/pan
[Install]
WantedBy=bluetooth.target
FILE /usr/local/sbin/pan
#!/bin/sh
# Ugly hack to work around #787480
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
exec /usr/local/sbin/bt-pan --systemd --debug server pan
ืื ืืืื ืฆืืจื ืืงืืืฅ ืืฉื ื ืื ืืืืืื ืืืืชื ืชืืืื ื-IPMasquerade= (ืจืื ืืืื).
ืืืืจ ืืืฆืืข ืืคืงืืืืช ืืขืจืืช ะธ systemctl ืืคืขื ืืืืฉ systemd-netwerkd ืืชื ืืืื ืืืคืขืื Bluetooth PAN ืขื ืืคืงืืื systemctl ืืชืื ืคืื
ืืงืื Bluetooth PAN ืืืืฆืขืืช Systemd
ืื ืฆื ืืืงืื ืงื ืืืืืจื ืืืืฆืขืืช Systemd.
ืงืืืฅ /etc/systemd/network/pan-client.network
[Match]
Name=bnep*
[Network]
DHCP=yes
ืงืืืฅ /etc/systemd/system/[ืืืื ืืืื"ื]
[Unit]
Description=Bluetooth Personal Area Network client
[Service]
Type=notify
ExecStart=/usr/local/sbin/bt-pan --debug --systemd client %I --wait
ืืขืช, ืืืืจ ืืขืื ืช ืืชืฆืืจื ืืืืฉ, ืชืืื ืืืชืืืจ ืื ืงืืืช ืืืืฉื ืฉื Bluetooth ืฉืฆืืื ื ืื:
systemctl start pan@00:11:22:33:44:55
ืืชืืื ืืืืฆืขืืช ืฉืืจืช ืืคืงืืื
ืืืืื ืฉืืืืจืช ืืฉืจืช ืืืืงืืืืช ืืืืืช ืืืืขืฉืืช ืืืืจ ืืฆืืืชื ืืืืฆืขืืช ืืืืืืช'. ืืฉืจืช, ืืชื ืฆืจืื ืืืคืขืื bluetoothctl ืืืชืช ืื ืคืงืืืืช:
power on
agent on
default-agent
scan on
scan off
pair XX:XX:XX:XX:XX:XX
trust XX:XX:XX:XX:XX:XX
ืืืืจ ืืชืืืช ืืกืจืืงื, ืืืชื ืืกืคืจ ืฉื ืืืช ืขื ืฉืืืืฉืืจ ืืืจืืฉ ืื ืืืคืืข ืืจืฉืืื. ืจืฉืื ืืช ืืืชืืืช ืฉืื ืืืฉืชืืฉ ืื ืขื ืคืงืืืช ืืฆืื ืืืืืืช ืืฆืืจื ืขื ืคืงืืืช ืืืืื.
ืืฆื ืืืงืื, ืืชื ืฆืจืื ืืขืฉืืช ืืช ืืืชื ืืืืจ, ืืื ืคืงืืืช ืืืืื ืื ืชืืื ื ืืืฆื ืืืืืืืช. ืืฉืจืช ืฆืจืื ืืืชื ืืื ืืงืื ืืืืืจ ืืคืจืืคืื NAP ืืื ืืืฉืืจ ืืื ื ืฉื ืืืฉืชืืฉ.
ืืืืืจ ืื ืืืื ืฉืืื ืจืฆืฃ ืืคืงืืืืช ืืืืคืืืืื. ืืืื ืื ืื ืฉืฆืจืื ืื ืืืชืืื ืืช ืืืงืื ืืฉืจืช ืืืืคืขืื ืืช ืคืงืืืช ืืืืื ืืฉืจืช, ืืื ืืื ืื ื ืืกื ืืช ืื ืขืืืื.
ืืคืขืืช ืคืจืืคืื Bluetooth HID
ื ืืจืฉ ืฉื"ืคืื" ืืืื ืืช ืืืงืืืช ืืืืืืจืช ืืฆื ืืืจืืื ืืืืฆืขืืช ืืื, ืืืืขืืจืช ืขื ืืื ืืฆื ืขืฆืื ืืืืฆืขืืช ืืืืืืช'. ืชืขืฉื ืืืชื ืืืจ, ืืื ืืืงืื ืกืืื ืขื ืฆืจืื ืืชืช ืคืงืืื ืืงืืืช ืกืืื ืืืื ื-bluetoothctl ืืืฆื ืืืฉืืจ ืขื ืคืจืืคืื HID.
ืืื ืงืืืขืช ืืชืฆืืจื ืฉื Bluetooth ืืืืฆืขืืช ืฉืืจืช ืืคืงืืื ืืื ืืกืืืืช.
ืืืจืืช ืฉืืืืืจ ืืฆืืื ืืืืืืจ ืืื, ืืื ืืืื ืฉืืืืจืช BlueZ ืืจื ืฉืืจืช ืืคืงืืื ืืื ื ื ืืื. ืืืชืืื ืืื ืืฉื ืฉืฆืจืื ืกืืื ืื ืจืง ืืืื ืช ืงืืื PIN, ืืื ืืชืืจืจ ืืืฉื ืฉืืื ืืืคืขืื ืืช ืคืจืืคืื HID ืฆืจืื ืืืงืืื "agent KeyboardOnly". ืืืืคื ืืคืชืืข, ืืื ืืืคืขืื Bluetooth PAN, ืืชื ืฆืจืื ืืืคืก ืืจื ืืืืืจืื ืืืืคืืฉ ืืืจ ืืกืงืจืืคื ืื ืืื. ืืื ืืืืจ ืฉืืืจืกื ืืงืืืืช ืฉื BlueZ ืืื ืืื ืืืื ืืื. pand - ืืืคื ืืื ืขืืฉื ื-BlueZ 5? ืคืชืืื ืืืคืืข ืคืชืจืื ืืืฉ, ืื ืืืืข ืืืืืจ, ืืื ืฉืืื ืขื ืคื ื ืืฉืื?
ืคืจืืืืงืืืืืืช
ืงืฆื ืืขืืจืช ืื ืชืื ืื ืืื ืืขืจื 120 kbps, ืืื ืื ืืกืคืืง. ืืขืื ARM 1GHz ืืืืจ ืืืื ืขืืืจ ืืืฉืง ืฉืืจืช ืคืงืืื. ืืืืืจ ืขืืืื ืืชืื ื ืืืฉืชืืฉ ืืขืืงืจ ื-ssh ื-emacs ืืืืฉืืจ.
ืืืคื ื ืงืื ืกืืื ืืจืืืืืฆืืืช ืืกื
ืจืืืืืฆืืืช ืืืกื ืืืืืืจืช ืืืจืืจืช ืืืื ืืืฉืืฉืช ืืช ื-framebuffer ื-Raspberry Pi Zero ืืื ืืืืจื ืืืื: fbset ืืืืืืช ืขื 656x416 ืคืืงืกืืื (ืืื ืฆื ืืืืืจ, ืืืืื). ืขื ืืืคื ืงืื ืกืืื ืฉื 8x16, ืงืืืื ื 82 ืชืืืื ืืฉืืจื ื-26 ืฉืืจืืช.
ืขืืืื ืขื ืฆื ืืจืืื ืฉื 40 ืชืืืื ืืืฆื ืื ืืื ื ื ืืื. ืืื ืื, ืืืืืจ ืืขืื ืืื ืฉืชืืื Unicode ืืืฆืื ืืืจืืื. ืืืจืื ืืืื, ืืื ืืงืก ืชืืืืช ื-512 ืชืืืื, ืืืจืื ืืืคื ื ืืืกืืฃ ืืฉ 256 ืชืืืื. ืขื ืืืืจืช ืืืกืืฃ, ืืชื ืืืื ืืืฉืชืืฉ ืืฉื ื ืืืคื ืื ืฉื 256 ืชืืืื ืืื. ืืืืืจ ืืืกืืฃ ืืช ืืฉืืจืืช ืืืืืช ืืงืืืฅ /etc/default/console-setup:
SCREEN_WIDTH=80
SCREEN_HEIGHT=25
FONT="Lat15-Terminus16.psf.gz brl-16x8.psf"
ืืขืจื: ืืื ืืืคืื ืืช ืืืืคื brl-16x8.psf ืืืืื, ืขืืื ืืืชืงืื ืงืื ืกืื ืืจืืื.
ืื ืืืื?
ืฆื ืืืจืืื ืืืื ืฉืงืข 3,5 ื"ื, ืื ืืืืืจ ืืื ื ืืืืจ ืืชืืืื ืืงืืืืช ืืืืื ื-Mini-HDMI. ืืืืืจ ืื ืืฆืืื ืืืฉืชืืฉ ืืืจืืืก ืืงืื ืืืืื ื ื"ืคืื" (ืืืืจ, ืืืชืจืื ืืื ืืืื ืฉื-Zero ืืื ืืื, ืืื ืืฉ ืืจืืื ืืืืฆืื ืกืืื ื ืขื ืืื PWM ื-GPIO). ืืื ืืชืื ื ืืืฉืชืืฉ ืืจืืืช USB-OTG ืืืืืจ ืืจืืืก ืืืฆืื ื ืืคืื ืฆืืื ืืจืืงืื ืืืืื ื ืืฆื ืืืจืืื. ืืฉืื ืื ืฉื ื ืืจืืืกืื ืืืฆืื ืืื ืื ืขืืื, ืืขืช ืืื ืืืคืฉ ืืืฉืืจ ืืืื ืืขืจืืช ืฉืืืื ืืืจืช.
ืื ืื ืื ื ืื ืืืืืช ืืื ืืช ืืช ื"ืคืื", ืืืืชืื ืืื ืฉื ืืืช ืืืืืืช ืืช ืฆื ืืืจืืื. ืืืื ืืืื ืฉืืืฉืจ ืืื ืืืื, ืืื ืืืฆืื ืืช ืืืฉืื ืืืืืืจ ืืชื. ืืืืืจ ืืชืื ื ืืืงื ืกืืืืช ืืืฅ ืงืื ื ืืชื ืืืืืฆืขืืช GPIO ืืืืืืข โโื"ืคืื" ืขื ืืืืื ืืชืฆืืื ืื ืฉืืื ืชืชืืื ืืืืืืืช. ืืื ืืื ื-UPS ืืืื ืืืืืจื.
ืชืืื ืช ืืขืจืืช
ืื ืืฉ ืื ืืช ืืืชื ืฆื ืืจืืื ืืืชื ืจืืฆื ืืขืฉืืช ืืช ืืืชื ืืืืจ ืืืชื, ืืืืืจ ืืฉืื ืืกืคืง ืชืืื ืช ืืขืจืืช ืืืื ื (ืืืืกืกืช ืขื Raspbian Stretch). ืืชืื ืื ืขื ืื ืืืชืืืช ืืืขืื. ืื ืืฉ ืืกืคืืง ืื ืฉืื ืฉืืชืขื ืืื ืื, ืืคืฉืจ ืืคืืื ืืืืฆืื ืขืจืืืช ืืืืืืืช ืืช ืื ืืืจืืฉ ืืขืืืื ืืืืืฉ ืืื.
ืชืืืืช
ืชืืื ืืืืื ืืืืืงื ืขื ืืืื ืฉื ืืืงืกื.
ืชืืื ืืกืืืืื ืงืื ืฅ ืขื ืืืืจื ืืชืืื ืืช.
ืชืืื ืืขืืืชืื ืืืื ืืืจืกืืืช ืืจืืฅ ืืืื ืืืืืื ืขื ืฉืืฆืืื ืืช ืืืืืจ ืืืืืจืืช ืืขืืื ืฉื Raspberry Pi.
ื .ื.
ืืงืืจ: www.habr.com