Настраиваем USB-телефон SkypeMate P1K на Ububntu 10.10

В один прекрасный день мне в руки попался USB-телефон SkypeMate USB-P1K от Yealink Corp. И возникла острая необходимость звонить по SIP, через данный девайс.

Под Windows этот SkypeMate без установки драйверов работает как обыкновенная гарнитура. Драйвера можно взять на офсайте SkypeMate.
Вот только на моем ПК стоит Ububntu 10.10. И, судя по поиску в гугле, подключение USB-телефона к линуксовому компьютеру сопровождается всяческими танцами с бубном. В общем, через пару часов упорных поисков были найдены две статьи на данную тему:

Linux USB phone howto
VoIP-телефоны на чипах Yealink в Linux

В результате хочу описать собственную установку телефона на Ububntu 10.10. (Для тех у кого, так же как и у меня, руки кривые и память плохая) Данная статья представляет собой компиляцию двух выше озвученных ссылок.

Первым делом, втыкаю USB телефон в ПК и смотрю что выдает lsusb:

Bus 004 Device 002: ID 6993:b700 Yealink Network Technology Co., Ltd.
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Как я поняла, эти телефоны выпускаются на двух разных чипах — Yealink (мой случай) и Freshtel (полностью описывается в первой ссылке).
Телефон, при первом же подключении в Ubuntu можно использовать как гарнитуру. Проверка в скайпе это подтверждает. Но клавиатура телефона не работает.
Чтож, ставим модуль Yealink в нашу Ububntu. (Все команды, за некоторым уточнением взяты отсюда — http://www.ylsoftware.com/news/622#2415)

Получаем рутовый доступ

sudo su —

Затем я ставлю систему управления версиями subversion, т.к. по умолчанию она не стоит

apt-get install subversion

Затем дальше по мануалу:
Получаем полный срез репозитория с исходными текстами модуля:

svn co —username guest —password readonly svn://devbase.homelinux.org:5070/voip/yealink-module

Устанавливаем необходимые для сборки модуля пакеты:

apt-get install linux-headers-generic linux-source dkms

Затем идем в директорию trunk (с последней версией модуля у меня ничего не получилось)

cd yealink-module/trunk/

«Далее можно просто собрать модуль и установить его, но тогда придётся при каждом обновлении ядра пересобирать модуль вручную. Гораздо интереснее автоматизировать эту задачу, переложив её на плечи системы. Именно для этого и создавался механизм DKMS.» — пишет автор. Мы молча соглашаемся, мало ли когда придется обновляться.

«Создадим архив с необходимыми файлами (фактически дистрибутив исходных текстов модуля) и развернём его в директорию «/usr/src»:»

make dist && tar jxfv yealink-module-* -C /usr/src/

Далее

nano /usr/src/yealink-module-20101214/dkms.conf

Туда пишем

PACKAGE_NAME=»yealink»
PACKAGE_VERSION=»20101214″
CLEAN=»rm -f *.*o»
BUILT_MODULE_NAME[0]=»yealink»
DEST_MODULE_LOCATION[0]=»/kernel/drivers/input/misc/»
REMAKE_INITRD=»yes»
AUTOINSTALL=»yes»

Добавим модуль в список обрабатываемых с помощью dkms:

dkms add -m yealink-module -v 20101214

Соберём модуль:

dkms build -m yealink-module -v 20101214

Установим его:

dkms install -m yealink-module -v 20101214

Теперь осталось выгрузить уже загруженный модуль и загрузить новый:

modprobe -r yealink && modprobe yealink

Здесь все для некоторых заканчивается, потому как работает клавиатура. Но у меня все так просто не заработало.

dmesg выдавал следующее:

[ 9166.288291] generic-usb 0003:6993:B700.0001: hiddev96,hidraw0: USB HID v1.10 Device [Yealink Network Technology Ltd. VOIP USB Phone ] on usb-0000:00:02.0-6/input3
[ 9166.288316] usbcore: registered new interface driver usbhid
[ 9166.288318] usbhid: USB HID core driver
[ 9166.362948] usbcore: registered new interface driver yealink
[ 9166.362950] yealink: Yealink phone driver: 20101214 (C) Thomas Reitmayr, Henk Vergonet

На хабре это объяснено как:
«Все дело в том, что модуль usbhid «забирает» себе устройство, и модуль yealink его не видит.»

Попробуем отнять наш телефон у usbhid. И сразу сталкиваемся с проблемой битых ссылок на хабре. Снова лезу в гугл, нахожу копию статьи с хабра. С трудом нахожу нужные мне скрипты тут.
Скачиваем, и продолжаем борьбу с usbhid:

cp /home/user/Downloads/rebind-yealink.sh /usr/local/sbin/

cp /home/user/Downloads/99-yealink.rules /etc/udev/rules.d/

Правим 99-yealink.rules

nano /etc/udev/rules.d/99-yealink.rules

Заменяем «max» на группу вашего пользователя.

И мне еще пришлось проверить права пользователя на запуск скрипта из /usr/local/sbin/

Должно быть:

-rwxr—r— 1 root root 2075 2011-06-22 17:16 rebind-yealink.sh

После этого dmesg выводит следующее:

[ 2658.764549] usbcore: registered new interface driver yealink
[ 2658.764553] yealink: Yealink phone driver: 20101214 (C) Thomas Reitmayr, Henk Vergonet
[ 2658.764899] usbcore: registered new interface driver snd-usb-audio
[ 2659.820360] yealink: Detected Model USB-P1KH (Version 0x1012)
[ 2659.948385] yealink: Serial Number cb0adb4a9296
[ 2659.948471] input: Yealink USB-P1KH as /devices/pci0000:00/0000:00:02.0/usb2/2-6/2-6:1.3/input/input4

Ура, после этого можно пользоваться клавиатурой телефона.

Большое спасибо авторам исходных статей, без них вся затея с телефон для меня была бы обречена на провал.

  • Сергей

    Сделал всё, как написано (только на 12.04) — ничего не поменялось. Клава и дисплей не работают. dmesg выдает другое сообщение.

  • Что выдает dmesg?

  • Sergey

    [ 8176.936196] yealink: Yealink phone driver: 20101214 (C) Thomas Reitmayr, Henk Vergonet<br />[ 9783.856046] usb 3-1: new full-speed USB device number 2 using ohci_hcd<br />[ 9784.062383] generic-usb 0003:6993:B700.0003: hiddev0,hidraw1: USB HID v1.10 Device [Yealink Network Technology Ltd. VOIP USB Phone ] on usb-0000:00:13.1-1/input3<br />[ 9784.233520] usbcore: registered new interface driver

  • Sergey

    Hurray! I got it finally! :)<br />At the end of the above story I ran a command as that <br /># sh rebind-yealink.sh<br />and it finally worked!