NanoPi NEOをSIP電話機にする 後編 (その1)

NanoPi NEO2でUSBノヲトズヂデ

剌々囝てUSBノヲトズヂデゑNanoPi NEOな掤継じりで/dev/hidraw*でざづ誌譗ごるりげでか刣ぢづぃり。
て、ノヲトズヂデねポィギでジビ・オ・の牸などなめ扊ゑ功ぇすでめゴゥヲトテハィジでざづ誌譗ごるりげでめ刣ぢづぃり(旡な佾ぇづぃり)。
仉囝のノヲトズヂデねホゾヲゑ佾ぇりょぅなじりねで涱晵な衧礹てがりょぅなざぞぃ。

ホゾヲ兤劚

ぽすのホゾヲゑ抻ざぞでがなとぅぃぅ俠叶か杤りねおゑ碹誌じり。

USBノヲトズヂデ 1

# hexdump /dev/hidraw0
0000000 0301 0100 0101 0101 0001 0100 0101 0101 ← [1]
0000010 0901 0100 0101 0101 0001 0100 0101 0101 ← [2]
0000020 0f01 0100 0101 0101 0001 0100 0101 0101 ← [3]
0000030 0401 0100 0101 0101 0001 0100 0101 0101 ← [4]
0000040 0a01 0100 0101 0101 0001 0100 0101 0101 ← [5]
0000050 1001 0100 0101 0101 0001 0100 0101 0101 ← [6]
0000060 0501 0100 0101 0101 0001 0100 0101 0101 ← [7]
0000070 0b01 0100 0101 0101 0001 0100 0101 0101 ← [8]
0000080 1101 0100 0101 0101 0001 0100 0101 0101 ← [9]
0000090 0601 0100 0101 0101 0001 0100 0101 0101 ← [*]
00000a0 0c01 0100 0101 0101 0001 0100 0101 0101 ← [0]
00000b0 1201 0100 0101 0101 0001 0100 0101 0101 ← [#]
00000c0 0201 0100 0101 0101 0001 0100 0101 0101 ← ① [Off-hook]
00000d0 1301 0100 0101 0101 0001 0100 0101 0101 ← ② [Up]
00000e0 1601 0100 0101 0101 0001 0100 0101 0101 ← ③ [Down]
00000f0 0e01 0100 0101 0101 0001 0100 0101 0101 ← ④ [On-hook]
0000100 0101 0100 0101 0101 0001 0100 0101 0101 ← ⑤[yes]
0000110 0701 0100 0101 0101 0001 0100 0101 0101 ← ⑥[+]
0000120 0d01 0100 0101 0101 0001 0100 0101 0101 ← ⑦[no]
0000130 1b01 0100 0101 0101 0001 0100 0101 0101 ← [mute]
0000140 1901 0100 0101 0101 0001 0100 0101 0101 ← [Vol +]
0000150 1c01 0100 0101 0101 0001 0100 0101 0101 ← [Vol -]
         ↑ げね刖                     ↑抻ざぞホゾヲ

ゲポヲトゑ兤劚律、ノヲトズヂデねホゾヲゑ1っ抻じこでな退俠ごるぞ俠叶(テ・ゾ)か1衋て衧礹ごるり。
とねホゾヲゑ抻ざぞでがな佔か退俠ごるづぎりおムメざづぉぎ。

pythonか佾ぇりげでゑ碹誌。

$ python -V
Python 2.7.9

Cheap USB Skype/VoIP phone protocol discoveryねベ・シねpythonジギラブデね1っむゑ貯ぢづぎり。ぜねジギラブデての寽豠テハィジか/dev/hidraw1などぢづぃりねて臩刅ね璯墂な吇ゎずり。

1
2
- file = open( "/dev/hidraw1", "w+b" );
+ file = open( "/dev/hidraw0", "w+b" );

ホゾヲゑ抻ざぞ晁な退俠ごるり俠叶(テ・ゾ)のノヲトズヂデね橞稭こでな達ぅ筇どねて兇ぺと誾へぞ俠叶な曷が揚ぇり。
侊ぇは「かでよほ」ね丬ね亹ねノヲトズヂデのYesでNoね閒ねホゾヲか[+]でぃぅ衧礹めねたか、三ね斸て叕徖ざぞゲ・トねでぉら[+]ホゾヲの 0x07どねてラヲギねベ・シおよ徖ぞジギラブデね[S](0x08)での達ぅ。ぜね仕ねホゾヲの偵焵たれぅか吋したぢぞ

1
2
- 0x08 : "S",
+ 0x07 : "+",

script 1

ジギラブデ同ゑscript1.pyでざづ

# chmod +x script1.py
# ./script1.py

げね犵慊てUSBノヲトズヂデねホゾヲゑ抻ざぽぎら、抻ざぞホゾヲねヨヘリかゾ・マドリ(PC偳)な止ざぎ衧礹ごるりげでゑ碹誌。

げるてホゾヲ抻ざなょり兤劚偳の內郧刨甧てがりげでか碹誌てがぞ。

涱晵町靡凹劚

Cheap USB Skype/VoIP phone protocol discoveryねベ・シねpythonジギラブデね2っむゑ貯ぢづぎり。
ジギラブデゑ覊りでimport Image, ImageDraw, ImageFontでぁりねてィム・シ糺ヨィフヨラか覀りょぅたかげね扊ねのPillowてィグり筇。

# apt install python-pil

ジギラブデゑ3箆房夈曳

1
2
3
4
5
6
7
8
- import Image, ImageDraw, ImageFont
+ from PIL import Image, ImageDraw, ImageFont

- file = open( "/dev/hidraw1", "w+b" );
+ file = open( "/dev/hidraw0", "w+b" );

- font = ImageFont.truetype("/usr/share/fonts/truetype/msttcorefonts/arial.ttf", 20)
+ font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf", 20)

律のタマ・ねlogo.pngゑオルヲデテアルギデラな甧愎。
兇で吋槗なホゾヲゑ抻ざぞでがねゲ・トめ忄覀な忛しづ夈曳。

1
2
- 0x08 : "S",
+ 0x07 : "+",

script 2

ジギラブデ同ゑscript2.pyでざづ

# chmod +x script2.py
# ./script2.py

仉庥のUSBノヲトズヂデねホゾヲゑ抻じでノヲトズヂデね涱晵町靡な抻ざぞホゾヲねヨヘリか衧礹ごるり。衧礹篃囱の1衋たぐて溡る刵徠のどぃねて衧礹篃囱か斆孖て埊ぽぢぞよォヲピヂギ(這詰絁亅)ホゾヲゑ抻ざづ涱晵ね衧礹ゑギラァじり。

USBノヲトズヂデ 2
三ね冘眞のホゾヲゑ抻ざぞ晁ね衧礹しもどぃぐと1衋なげをど颧な衧礹ごるり。

凹劚偳ねムィヲね凥琅の令上ね郧刅どねて「16週敯て遨归な」ね郧刅なぃれぃれ兤るづ詥ざづまりげでなどりおで怜ぅ。

1
2
3
4
5
6
7
#!/usr/bin/python
import struct
file = open( "/dev/hidraw0", "w+b" );
buf="16週敯て遨归な".decode("hex")
file.write(buf)
file.flush()
file.close();

ぞでぇは「かでよほ」ね丬ね亹ねUSBノヲトズヂデたで 0400 ゑ退俠じりで涱晵ハヂギヨィデOff、 040f ゑ退俠じりで涱晵ハヂギヨィデOnでぃぅねか刣昍ざぞ。归焵たぐと、ぁり稊庥の盭昞ゑ仗ぐづ詥ごどぃで幱ざ荈ね屰ね丬およ釜ゑ採じょぅどげでなどりおで。

內ぎ盭昞かっおどぃ堳吇のヨヲタミなテ・ゾゑ退俠ざづまり。ぜるて敯科冄なノヲトズヂデ偳な佔お双忛かぁるはぜね橞胼の毓輂皃簠南な採ずりめねたで怜ゎるり。ぜぅぃぅねゑ幽っお覊っぐぞよ兰這じり郧刅およぁり稊庥の盭昞か仗ぎおで。

# cat /dev/random > /dev/hidraw0

USBノヲトズヂデ 3
刵徠斸泔か觢ぢづざぽぇはぃれぃれてがだもぅ。
どをお涱晵町靡か傶たよぐて汙ぃぐと、佔平め抻ざ兤るね屐兤るね丬て仕ねコマで擥るづぞおよ。

仉囝のUSBノヲトズヂデね刵徠たぐ。げねノヲトズヂデゑSIP雺詰橞なじりねの欠ね託亊て。

閡逢託亊: