Как я познакомил мышь DNS Extreme M-1 c Xubuntu 12.04.2 LTS

    После покупки мыши DNS Extreme M-1 выяснилось, что в операционной системе Xubuntu 12.04.2 LTS она не работает, а на официальном сайте в рубрике «Вопрос-ответ» написано, что любой Linux данную мышь не поддерживает.

    Команда lsusb показывала мышь, как
    Bus 003 Device 002: ID 04d9:a067 Holtek Semiconductor, Inc. 
    
    Интенсивно погуглив около дня, было найдено интересное решение на одном из иностранных форумов.
    Откроем терминал (по-умолчанию сочетание Ctrl+Alt+T).
    Выполним
    sudo apt-get install fakeroot kernel-wedge build-essential makedumpfile kernel-package libncurses5 libncurses5-dev
    
    для установки необходимых пакетов для сборки ядра.
    Дальше выполним
    mkdir ~/source
    cd ~/source
    apt-get source linux-image-$(uname -r)
    
    для получения исходного кода текущего ядра. Исходный код ядра 3.2.48 занимает примерно 98,7 Мб. Придётся немного подождать.
    Наберём
    cd linux
    
    и нажмём клавишу Tab для автозаполнения полного имени папки, после чего нажмём Enter.
    Выполним
    gedit include/linux/hid.h
    
    и найдём в файле строчку #define HID_MAX_USAGES (Для поиска можно воспользоваться сочетанием Ctrl+F). Изменим числовое значение на 64000.
    Выполним
    cp -vi /boot/config-`uname -r` .config
    
    для подготовки конфигурационного файла нашей текущей операционной системы.
    Также далее можно выполнить
    export CONCURRENCY_LEVEL=#
    
    для ускорения процесса компиляции. # необходимо заменить на число большее на 1, чем число ядер центрального процессора.
    Выполним
    make-kpkg clean
    
    для подготовки директории к компиляции.
    Запустим компиляцию кастомного ядра
    fakeroot make-kpkg --initrd --append-to-version=-sk kernel-image kernel-headers
    

    Внимание! Процесс компиляции может занять длительное время (на процессоре Intel U5400 моего ноутбука пришлось подождать чуть больше, чем 4 часа).
    После окончании операции перейдем в каталог исходного кода ядра, где нас будут ждать два deb-пакета.
    cd ~/source
    

    Дальше перейдём к процессу установки кастомного ядра.
    В файловом менеджере перейдем по пути /lib/modules. Откроем терминал и выполним
    cd ~/source
    

    Далее выполним
    sudo dpkg -i linux-image-*.deb    
    sudo dpkg -i linux-headers-*.deb
    

    Имена пакетов можно узнать при вводе команды нажав Tab, используя автозаполнение.
    Выполним дальше
    sudo update-initramfs -c -k НУЖНО_ЗАМЕНИТЬ)
    

    Заменять нужно на имя новой папки, которая появилась в файловом менеджере. У меня она называлась 3.2.48-sk.
    Обновим grub
    sudo update-grub
    

    Для тех кто использует burg необходимо ещё обновить и burg
    sudo update-burg
    

    Для удаления более не нужных пакетов выполним
    sudo apt-get remove fakeroot kernel-wedge build-essential makedumpfile kernel-package libncurses5 libncurses5-dev
    
    но я их оставил на месте, мало ли что.
    Выполним
    rm -r ~/source
    
    для удаления каталога с исходным кодом.
    Перезагрузим систему, при загрузке выбрав новое ядро.
    После загрузки системы мышь работает.
    Наверняка, это инструкция может помочь и для другой продукции DNS. Почему значение HID_MAX_USAGES влияет на поддержку оборудования я сам до конца не понимаю. Буду рад услышать грамотные объяснения в комментариях.
    • +6
    • 11.4k
    • 9
    Share post

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 9

      +2
      us.generation-nt.com/answer/patch-0-2-holtek-gaming-mouse-driver-necessity-instead-increasing-hid-max-usages-help-211343902.html

      Вкратце: да потому, что давно пора его увеличить было…
        0
        С другой стороны, могут возникнуть проблемы с созданием вот этой структурки: lxr.free-electrons.com/source/include/linux/hid.h#L325. Она внезапно становится в 4 раза больше, а выделение непрерывного куска памяти размером больше страницы не гарантируется. Правда, сейчас физической памяти много, и проблем скорее всего не будет.
          0
          её уже столько раз наращивали, что не думаю что проблема будет.

          ну и альтернатива что? утки? в смысле — замена массивов на slab'ы?
          кто б занялся, а памяти всё больше, смысла в экономии всё меньше…
        0
        А в чем суть манипуляций?
          0
          Увеличить константу, из-за которой инициализация девайса не проходила
            0
            Уменьшить. Было где-то 131768, стало 64000.
              0
              datacompboy@nuuzerpogodible:~$ grep "#define HID_MAX_USAGES" `locate /hid.h`
              /home/datacompboy/HDD/32bit/usr/src/linux-headers-3.2.0-4-common/include/linux/hid.h:#define HID_MAX_USAGES 12288
              /usr/src/linux-headers-3.4.1-pf/include/linux/hid.h:#define HID_MAX_USAGES 12288
              /usr/src/linux-headers-3.9-1-common/include/linux/hid.h:#define HID_MAX_USAGES 12288
                0
                Извините. Я первый раз неверно сказал. Было
                #define HID_MAX_USAGES 12288
                  0
                  Вы правы.

          Only users with full accounts can post comments. Log in, please.