Linux USB電話の使用方法

このドキュメントでは、Yealink P1Kに基づいたLinux用USB電話のインストールと設定について説明しています。 その結果、マウスとキーボードを使用せずに、通話を完全に制御できました。



はじめに


私は常にモバイル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アカウント




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

コアへのモジュール



All Articles