Есть правила примерно такого вида (вместо madwimax запускается скрипт-обёртка):
# udev rules file for madwimax supported devices
SUBSYSTEM!=«usb», GOTO=«madwimax_rules_end»
ACTION!=«add», GOTO=«madwimax_rules_end»
# run madwimax
ATTRS{idVendor}==«04e8», ATTRS{idProduct}==«6761», RUN+=«/sbin/madwimax -df --exact-device=$attr{busnum}/$attr{devnum}»
ATTRS{idVendor}==«04e9», ATTRS{idProduct}==«6761», RUN+=«/sbin/madwimax -df --exact-device=$attr{busnum}/$attr{devnum}»
ATTRS{idVendor}==«04e8», ATTRS{idProduct}==«6731», RUN+=«/sbin/madwimax -df --exact-device=$attr{busnum}/$attr{devnum}»
ATTRS{idVendor}==«04e8», ATTRS{idProduct}==«6780», RUN+=«/sbin/madwimax -df --exact-device=$attr{busnum}/$attr{devnum}»
LABEL=«madwimax_rules_end»
Соответственно при втыкании модема на ходу всё отлично отрабатывает. Но при перезагрузке, если модем не передёрнуть, ничего не запускается.
Дистрибутив - стабильный Дебиан, ядро рдное. На гентушных форумах рекомендуют вкомпилить в ядро модуль TUN (не понимаю причём тут это, не работает вообще ничего, даже echo). Вроде так же помогает udevadm trigger, но сейчас не могу проверить. Насколько идеологически верным будет запихнуть вызов udev trigger в rc.local? =)