Некоторое время назад автор этих строк стал обладателем USB VoIP трубки Skypemate USB-P1K и озадачился организацией нормальной работы этой трубки в Linux (используется Xubuntu 10.10 amd64). Skypemate USB-P1K является (как и большинство трубок такого класса) полным клоном трубки Yealink USB-P1K, и это заметно упростило задачу.
Как оказалось поддержка трубок на чипах yealink в Linux всё-таки есть, но входящий в состав ядра (по крайней мере в дистрибутивах на основе Ubuntu) модуль является очень старым и поддерживает только минимальный функционал (в частности не работает клавиатура). Далее будет показано как можно установить современную версию модуля yealink и так же организовать автоматическую сборку модуля для новых ядер через DKMS.
Первым делом "поднимемся" до суперпользователя:
sudo su -
Затем получим полный срез репозитория с исходными текстами модуля:
svn co --username guest --password readonly svn://devbase.homelinux.org:5070/voip/yealink-module
Установим необходимые для сборки модуля пакеты:
apt-get install linux-headers-generic linux-source dkms
Далее посмотрим в директорию "yealink-module/tags" и выберем подходящий срез. Автор этих строк выбрал самый новый (на момент написания статьи): "yld-20101214". Перейдём в директорию с выбраной версией:
cd yealink-module/tags/yld-20101214
Далее можно просто собрать модуль и установить его, но тогда придётся при каждом обновлении ядра пересобирать модуль вручную. Гораздо интереснее автоматизировать эту задачу, переложив её на плечи системы. Именно для этого и создавался механизм DKMS.
Создадим архив с необходимыми файлами (фактически дистрибутив исходных текстов модуля) и развернём его в директорию "/usr/src":
make dist && tar jxfv yealink-module-* -C /usr/src/
Теперь создадим файл "/usr/src/yealink-module-20101214/dkms.conf", который содержит правила сборки модуля через DKMS. Его содержание:
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
Теперь в системе установлен новый модуль и трубка работает гораздо лучше. Появилась возможность использовать клавиатуру и динамик звонка. Кроме того при установке новых ядер модуль будет автоматически собираться под новое ядро.
На этом всё. Приятной работы!
Anonymous 2011-02-11 18:33:01 (#)