Как говориться несмотря ни на что....
Вчера у меня заработали драйверы к USB Samsung SWC-U200.
Драйвер я писал сам, на основое
code.google.com/p/madwimax/В отличии указаного выше, драйвер работает внутри ядра, что на мой взгляд более правильно.
Что значит работает:
- он нормально собирается под 2.6.27
- соеденяется с сетью и показывает уровни сигнала
-
( Read more... )
Comments 36
http://community.livejournal.com/yota_ru
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Увы, у меня не заработало. Упало и увлекло за собой всё остальное :) В связи с чем вопрос: тестировался ли драйвер на x86_64?
Перегрузился в пустую систему без иксов, загрузил драйвер, воткнул устройство - опять kernel crash но на этот раз система осталась жива и даже eth1 появился. Запустил на нём dhclient - не видит ничего. Есть ли сигнал в моём районе я не в курсе, попробую чуть позже на виндовой машине.
Если интересно, кернел лог с паданием и неработой тут. Бросается в глаза, что драйвер всё время ресетит девайс, видимо что-то ему не нравится.
И ещё, стандартный путь для kernel build system - /lib/modules/`uname -r`/build. В альтлинуксе это не так?
Reply
Там логика подёма хитрая. После появления eth1 ему надо сказать ip l s up eth1, потом iwconfig eth1 ff:ff:ff:ff:ff:ff(любой мак) он начинает коннектиться. Потом в dmesg появляется we connected и тогда можно запускать dhclient. При этом network manager делает всё сам и нормально.
То что в логах это варнинги, из за того что там получается обработчик прирывания слишком долго его обрабатывает. Надо придумать что-то получше.
Ресет девайса вызван не драйвером, возможно девайсу не хватает питания.
про путь: ALT это тоже работает, но тогда собирать модуль надо от рута, а это несколько неправильно.
Reply
Что же до /lib/modules, это должно работать из-под любого пользователя (там стоит право на чтение для любых пользователей, во всяком случае так в Федоре).
То что в логах это варнинги, из за того что там получается обработчик прирывания слишком долго его обрабатывает. Надо придумать что-то получше.
Jan 25 23:56:11 zap kernel: BUG: sleeping function called from invalid context at kernel/mutex.c:88
Это оттого, что функция register_netdev() была вызвана из обработчика прерывания (пришёл URB), и где-то внутри вызвался mutex_lock() который решил заснуть (видимо, семафор кем-то занят).
Мне не очень понятно, почему там вдруг всплыл register_netdev во время получения URB. Странно.
Reply
А вот оно в чем дело, в альте просто нет. Не думал что в других дистрах это можно. Тогда попроавлю.
>Мне не очень понятно, почему там вдруг всплыл register_netdev во время получения URB. Странно.
Дело в том что информация о том, что устройство инициализированно приходит так. Я решил что пока оно не инициализировано не надо создавать устройво. Навероне его стоит вынести в какой нибудть tasklet или kernel_thread
Reply
опыта по сборке нет
может есть пару команд которые нужно ввести в консоли ?
Reply
В целом это примерно так:
надо поастивить хедера от ядра
потом сделать make KSRC=путь к хедерам
потом можно insmod u200.ko
Reply
Reply
На данный момент запускаю из папки куда инсталлировал появляется шкала и новое беспроводное подключение
Reply
Reply
Leave a comment