Net2Phone YapPhone(Y@pPhone) в Linux

Захотел я попользоваться ip телефонией. Удобнее всего разговаривать по обычной телефонной трубке. Нашелся далеко в шкафу телефон называющийся Net2Phone Yaphone(Y@pPhone) он же OrangePhone.
Устройство имеет следующий внешний вид:

При включении аппарата видим следующее в логах:
usb 3-2: new full speed USB device using uhci_hcd and address 4
usb 3-2: configuration #1 chosen from 1 choice
и lsusb выдал ID 1527:0201.

Поиски в гугле ничего не знают о дружбе этого устройства с линаксом, удалось найти только драйвера под Windows.

Они содержат следующие файлы:
Yapaudio.inf
Yaphub.inf
YapLoad.sys
YapHid.Inf
Yapload.inf

С другой стороны через Google code search была найдена следующая информация:
в исходниках ядра NetBSD/FreeBSD есть прописанные YapPhone ID.

include/dev/usb/usbdevs.h:1158
#define USB_PRODUCT_SILICONPORTALS_YAPPH_NF 0x0200 /* YAP Phone (no firmware) */
#define USB_PRODUCT_SILICONPORTALS_YAPPHONE 0x0201 /* YAP Phone */

Из файлов *.inf стало понятно, что данный телефон после загрузки firmware принимает значение Product ID=0x0201 и должен работать как обычное usb hid устройство(клавиатура) и usb media устройство. Логично предположив, что в YapLoad.sys должна хранится прошивка, я стал исследовать его в Ida Pro. На удивление там осталась отладочная информация, поэтому сразу стало ясно, что это драйвер загрузки прошивок в Cypress EZ USB чип. После чтения документации по данному семейству микроконтроллеров выяснилось, что загрузка прошивки происходит в два этапа: сначала грузится loader, потом сама прошивка. Также через google code search был найден пример драйвера подобного устройства(ezloader.c).
В итоге Ida Pro в сегменте с данными файла YapLoad.sys были найдены обе прошивки. После этого они были извлечены из файла:

$dd if=YapLoad.sys skip=2144 count=10168 bs=1 of=firmware.bin
$dd if=YapLoad.sys skip=12312 count=3064 bs=1 of=loader.bin

Формат, чуть-чуть отличался от intel hex
По-быстрому написал скрипт на питоне для конвертации в правильный формат Intel Hex.

$python bin2int.py firmware.bin > yapphone_firmware.ihx
$python bin2int.py loader.bin > yapphone_loader.ihx

Теперь прошивки извлечены. Осталось только залить их в устройство. В репозитарии Debian/Ubuntu нашлась утилита fxload(apt-get install fxload) для прошивки EZ USB чипов.
После установки fxload я скопировал yapphone_loader.ihx и yapphone_firmware.ihx прошивки в /usr/share/usb/.
Для автоматического заливания прошивки при подключении устройства добавил файл /etc/udev/rules.d/55-yapphone.rules
со строчкой:
BUS=="usb", ACTION=="add", SYSFS{idProduct}=="0200", SYSFS{idVendor}=="1527", RUN+="/bin/sh -c '/sbin/fxload -D %N -s /usr/share/usb/yapphone_loader.ihx -I /usr/share/usb/yapphone_firmware.ihx'"

После этого подключаю устройство и вижу в логах:
usb 3-2: new full speed USB device using uhci_hcd and address 4
usb 3-2: configuration #1 chosen from 1 choice
hiddev96: USB HID v1.00 Device [Silicon Portals. Y@pPhone - The way to chat. ] on usb-0000:00:1a.1-2
usbcore: registered new interface driver snd-usb-audio

Как видим клавиатура и звуковое устройство определились правильно.
Запустил skype и проверил работоспособность устройства.

Приложение:
архив с прошивкой и файлом 55-yapphone.rules
UPD:пакет для Ubuntu/Debian
UPD:Ебилд для Gentoo. Спасибо Михе
P.S. Не знаю насколько законно такие действия в США в рамках DMCA,но в нашей суверенной демократической стране пока что я не нарушил таким образом закон.

У меня

У меня сохранилась cd от него, размер примерно 13мб. Могу передать, долько пиши как?

U menya soxranilas' cd ot

U menya soxranilas' cd ot nego, razmer primerno 13mb. Skaji kak i ya peredam.

U menya soxranilas' cd ot

U menya soxranilas' cd ot nego, razmer primerno 13mb. Skaji kak i ya peredam.

Добрый

Добрый день. Уважаю linux и любителей linux, но очень хочется запустить данное устройство под Windows. Вы упоминали, что находили соответствующие драйвера. Не подскажете где их можно взять? Спасибо. Извините, что побеспокоил.

А как быть с

А как быть с клавиатурой? по логам клава появляется, но я так понял не стартует никакого обработчика этого события и клавиатуры в помине нет Спасибо

Где же взять

Где же взять драйвер для его установки? Тоже в шкафу нашла телефон. СПАСИБО

Thanks a lot! It nearly

Thanks a lot! It nearly rocks perfect on ubuntu 8.10 (mostly after a second boot process). Many thanks and greetings from Germany Cello

Не верю своим

Не верю своим глазам... Где-то около месяца назад попала ко мне эта труба, стал ковыряться, чтобы запустить под своей гентой. Нашёл виндовый драйвер, дизассемблировал, вытащил бинарники обоих прошивок (получились точно такие же параметры dd :). Нашёл DeviceID/VendorID в виндовом *.inf, fxload поставил, но не осилил преобразование выдранного бинарника в Intel HEX :( - пробовал воспользоваться objcopy, но обломался. Сегодня решил продолжить ковыряния - и нашёл это :). Мегареспект тебе ! Ты не против, если я сделаю ебилд для генту, который тянет архив с прошивкой с твоего сайта ? Думаю послать его в какой-нибудь из гентушных оверлеев (или sunrise, или ребятам на gentoo.ru).

Cпасибо

Cпасибо огромное, товарищ ! :-) Откуда то давно валялся в шкафу сей девайс, погуглил, пришел в уныние... А тут спасение ! ;-)

SPACIBO! I came across your

SPACIBO!
I came across your site and found your 'Y@pPhone for Linux' entry. Thanks a lot! Spacibo!