はじめに
私は常にモバイルVoIP電話を持ちたいと思っていました。 これは、携帯電話のように常にあなたと一緒にいるような電話ですが、同時にVoIP電話でもあります。 独自のIP PBXサーバーに接続します(Nokia E65などのオプションでは提供されません。モバイルWi-Fi電子レンジで耳を温めたくないため、USB電話のみが残ります)。 Windowsユーザーは単に住んでおり、すべての種類のX-Liteなどにはすべての種類のUSB電話用のドライバーが含まれており、すべての種類のUSB電話には異なるソフトフォンのディスクが付属しています。 しかし、Linuxデスクトップをお持ちの場合は、簡単な方法が注文されています。
USB電話の選択
「linux usb phone」というトピックのグーグル検索では、Yealink P1K USB電話が、正常に接続できる唯一の電話であることが判明しました。 同時に、試みた人の半分はそれを接続できませんでした。 それでは、試してみましょう。
設置
熊手を歩く過程で行われた長い道のりについては説明しません。 Yeaphoneパッケージwww.devbase.at/voip/yeaphone.phpの作成者であるThomas Reitmayrの応答性と支援に感謝します。 したがって、モバイルVoIP電話を取得するには、次のコンポーネントが必要です。-P1K USB電話-p1kカーネルモジュールyealink.ko-linphoneソフトフォン。 -yeaphoneパッケージ。
USB電話Yealink P1Kおよびyealink.koカーネルモジュール
一部のバージョン以降、Linuxのセクションには、デバイスドライバー→入力デバイスのサポート→その他のデバイス→Yealink usb-p1k voip phoneが含まれています。 ただし、このモジュールは古くなっています! トーマスのサイトからモジュールを取得する必要があります。 どうやら、これは彼の自宅のマシンなので、この記事の執筆時点で関連するファイルのコピーがここに添付されています(改訂:142)。 トーマスが言ったように:
You might own a P1KH (USB ID 6993:b700) which uses a slightly different
communication protocol compared to the P1K. The P1K is the only model
supported by the kernel module shipped with the regular Linux kernel.
However if yours is a P1KH (or a B2K, B3G, P4K) then you should try my
version of this module:
svn co --username guest --password readonly svn://devbase.homelinux.org:5070/voip/yealink-module
これはちょうど私の場合であり、lsusbの出力はこれを証明しました:
explorer t2-trunk # lsusb
...
Bus 003 Device 019: ID 6993:b700 Freshtel
私の比較的新しい2.6.31-gentooでは、モジュールは問題なく組み立てられました。
max@explorer /tmp/yealink-module/trunk $ make
make -C /usr/src/linux SUBDIRS=`pwd` modules
make[1]: Entering directory `/usr/src/linux-2.6.31-gentoo-r6'
CC [M] /tmp/yealink-module/trunk/yealink.o
Building modules, stage 2.
MODPOST 1 modules
CC /tmp/yealink-module/trunk/yealink.mod.o
LD [M] /tmp/yealink-module/trunk/yealink.ko
make[1]: Leaving directory `/usr/src/linux-2.6.31-gentoo-r6'
max@explorer /tmp/yealink-module/trunk $
結果のファイルは適切な場所に送信する必要があります。
cp yealink.ko /lib/modules/2.6.31-gentoo-r6/kernel/drivers/input/
ソフトフォンlinphoneとラッパーyeaphone
もう1つの「偽の道」は、linphoneソフトフォンバージョンです。 実際、サイトで公開されているすべてのパッケージはバージョン2.xブランチ向けであり、すべての新しいディストリビューションはlinphoneバージョン3.xをインストールします。 たとえば、net-voip / linphone-3.1.1をインストールしました。 yeaphoneのアセンブリエラーが接続されるのは、次のようなバージョンです。
home/adyna/Desktop/yeaphone-0.1.6/src/ylcontrol.c:578: undefined reference to `gstate_get_state'
/home/adyna/Desktop/yeaphone-0.1.6/src/ylcontrol.c:579: undefined reference to `gstate_get_state'
/home/adyna/Desktop/yeaphone-0.1.6/src/ylcontrol.c:580: undefined reference to `gstate_get_state'
実際、3番目のブランチではAPIが変更されました。 Thomasはパッチを作成しましたが、何らかの理由でtar.gzパッケージを更新せず、通常コンパイルされたコードはsvnのみにあります。 何らかの問題が発生した場合は、トーマスのWebサイトのコメントセクションを読むことをお勧めします。 便宜上、yaphoneのパッケージも記事に添付します。
usbhidと戦う
すべてをまとめた後でも、yaphoneを実行しようとするとメッセージが表示されました。
No appropriate handset found, exiting...
そして、それはこのように見えました:
usbcore: registered new interface driver yealink
yealink: Yealink phone driver: 20090418 (C) Thomas Reitmayr, Henk Vergonet
usb 3-1: USB disconnect, address 22
usb 3-1: new full speed USB device using uhci_hcd and address 23
usb 3-1: configuration #1 chosen from 1 choice
generic-usb 0003:6993:B700.0020: hiddev0,hidraw3: USB HID v1.10 Device [Yealink Network Technology Ltd. VOIP USB Phone ] on usb-0000:00:1a.1-1/input3
問題は、usbhidモジュールがデバイスを「取得」し、yealinkモジュールがそれを認識しないことです。 usbhidモジュールをアンロードし(注意、マウスがないまま)、一時的にusbhid.koをtmpに移動し、yealinkモジュールをリロードし、電話を接続すると、メッセージdmesgは次のようになります。
yealink: Yealink phone driver: 20090418 (C) Thomas Reitmayr, Henk Vergonet
usb 3-1: new full speed USB device using uhci_hcd and address 19
usb 3-1: configuration #1 chosen from 1 choice
yealink: Detected Model USB-P1KH (Version 0x1005)
yealink: Serial Number ff0adb4abc96
input: Yealink USB-P1KH as /devices/pci0000:00/0000:00:1a.1/usb3/3-1/3-1:1.3/input/input20
ご覧のとおり、電話が特定され、シリアル番号が示されています。 モジュールを毎回手動で再生する必要がないように、udevにルールを追加する必要があります。ルールは、usbhidから電話を「切り離し」、yealinkに「アタッチ」するスクリプトを呼び出します。 スクリーンショットはアプリケーションに表示されていますが、その作業の結論は次のとおりです。
explorer /tmp # sh /tmp/rebind-yealink.sh
Found Yealink phone at /sys/devices/pci0000:00/0000:00:1a.1/usb3/3-1
found HID interface at 3-1:1.3
successfully detached driver 'usbhid'
successfully reattached driver 'yealink'
explorer /tmp #
dmesgの出力は、すべてがうまくいったことを確認します。
udevと権限
最後の仕上げは/etc/udev/rules.d/99-yealink.rulesの適応です
explorer ~ # cat /etc/udev/rules.d/99-yealink.rules
KERNEL=="event*", ATTRS{name}=="Yealink*", GROUP="max", RUN+="/bin/sh -c '/bin/chgrp max /sys$env{DEVPATH}/device/device/*'"
ACTION=="add|change", SUBSYSTEMS=="usb", ATTRS{idVendor}=="6993", ATTRS{idProduct}=="b700", RUN+="/usr/local/sbin/rebind-yealink.sh"
maxではなく、アカウントが機能するグループを挿入する必要があることに注意してください。 グループを表示するには、groupsコマンドを実行します。 rebind-yealink.shスクリプトはアプリケーションにあります。 起動時に電話に次のようなものが表示される場合:
opmascha@explorer ~ $ yeaphone
path_sysfs = /sys/bus/usb/drivers/yealink/5-1:1.3/
path_event = /dev/input/event11
/sys/bus/usb/drivers/yealink/5-1:1.3/model: Permission denied
Detected handset Yealink USB-P1K
/sys/bus/usb/drivers/yealink/5-1:1.3/line2: Permission denied
/sys/bus/usb/drivers/yealink/5-1:1.3/line1: Permission denied
/sys/bus/usb/drivers/yealink/5-1:1.3/line3: Permission denied
/sys/bus/usb/drivers/yealink/5-1:1.3/hide_icon: Permission denied
これは、99-yealink.rulesに対処する必要があることを意味します-構文エラーが原因でうまくいかないか、アカウントでエラーが発生しました。 cd / sys / bus / usb /および監視権限。
スタートアップ
起動時に起動電話を登録します(rc.local、local.start、またはディストリビューションのように正しく):
su - max -c '/usr/local/bin/yeaphone -w' > /dev/null 2>&1 &
ここで、maxをアカウント名に変更する必要もあります。
カスタマイズ
すべてのコンポーネントをインストールしたら、構成を開始できます。 以下を構成する必要があります。
- SIPアカウント(ところで、これは制限の1つです。linphoneが無制限の数のアカウントをサポートする場合、yeaphoneはそれらをソートする方法がわからないため1つだけです)。
- オーディオデバイス-USB VoIP電話
- 追加します。 yaphoneの設定(着信音、ダイヤルオプションなど)。
SIPアカウント
- これを行うには2つの方法があります。
- linphone-3 GUI(ビルドされている場合)を起動して、アカウントを設定します。
- コンソールから構成します。 コンソールからの例はここにあります:
linphonec> proxy add
Adding new proxy setup. Hit ^D to abort.
Enter proxy sip address: sip:sipnet.ru
Your identity for this proxy: sip:1234567890@sipnet.ru
Do you want to register on this proxy (yes/no): yes
Specify register expiration time in seconds (default is 600): 180
Expiration: 180 seconds
Specify route if needed:
No route specified.
--------------------------------------------
sip address: sip:sipnet.ru
route:
identity: sip:1234567890@sipnet.ru
register: yes
expires: 180
registered: no
--------------------------------------------
Accept the above proxy configuration (yes/no) ?: yes
Proxy added.
linphonec> Registration on sip:sipnet.ru successful.
linphonec> Registration on sip:sipnet.ru successful.
linphonec>
オーディオ設定
次に、オーディオデバイスを構成する必要があります。 GTKインターフェースが組み立てられている場合は、GTKインターフェースで組み立てることができます。
linphonec> soundcard list
0: ALSA: default device
1: ALSA: HDA Intel
2: ALSA: VOIP USB Phone
linphonec> soundcard use 2
Using sound device ALSA: VOIP USB Phone
linphonec>
このコマンドは、USB電話を使用するようにすべてのサウンドチャネル(再生、キャプチャ、呼び出し)を構成します。
イヤホンのセットアップ
さて、結論として、設定の例を挙げます。 〜/ .yeahonercファイルには設定が含まれ、〜/ .yaphone / ringtone /フォルダーには着信音が含まれます。
max@explorer /tmp $ cat ~/.yeaphonerc
intl-access-code 810
natl-access-code 8
country-code 7
display-id " --123--"
ringtone_default default_p1k.bin
#ringtone_default default_p1kh.bin
#ringtone_default falling2_p1k.bin
#ringtone_default falling_p1k.bin
#ringtone_default rising_p1k.bin
#ringtone_default special_p1k.bin
着メロは厄介です。「バッタが草の中に座っていた」など、誰かがよりメロディックなものを追加してくれたら素晴らしいでしょう...
また、1つのプロキシサーバーのみが構成されていることを確認する必要があります。また、〜/ .linphonercファイルでデフォルトとして選択されています。 そのようなメッセージを受け取った場合
Warning: Could not parse given sip address. A sip url usually looks like sip:user@domain
これは、〜/ .linphonercハンドルを編集する必要があることを意味します。
おわりに
その結果、Skype mate P1K USB電話をラップトップに接続するとすぐに、最大10秒間サーバーに接続します。 ラップトップからUSBケーブルを抜くとすぐに、ソフトフォンの登録が解除されます。 稼働3日目では、問題は見つかりませんでした。
用途
Udevルール
usbhidから電話を取る際のudevのスクリプト
Yaphone 0.1.8
コアへのモジュール