# Linux Microdia Keyboard (Perixx PX-1800) Chipset Driver # For Chipset `0x0c45`:`0x7603` The kernel reports the chipset as `Microdia` Written for the Perixx PX-1800 USB Keyboard: [Perixx PX-1800 Keyboard](http://www.perixx.com/en/service/Perixx_Manual/GAMING/PX-1800.pdf) Original base: http://swoogan.blogspot.de/2014/09/azio-l70-keyboard-linux-driver.html, https://bitbucket.org/Swoogan/aziokbd > NOTE: Makefile and instructions are only tested on Ubuntu 16.04 and Archlinux 2016.10 (Kernel 4.8.4) # Installation ## ## DKMS ## # debian-based: sudo apt-get install git build-essential linux-headers-generic dkms # fedora: sudo dnf install git kernel-devel kernel-headers sudo dnf groupinstall "Development Tools" "Development Libraries" # arch: sudo pacman -S git base-devel linux-headers dkms # on all platforms: git clone https://git.sprinternet.at/h44z/perixx1800keyboard.git cd perixx1800keyboard sudo ./install.sh dkms ## Manual Install ## # Dependencies: git build-essential linux-headers dkms git clone https://git.sprinternet.at/h44z/perixx1800keyboard.git cd perixx1800keyboard sudo ./install.sh # Blacklisting # **NOTE: install.sh attempts to blacklist the driver for you. You shouldn't need to do anything manually. These instructions are to explain the process, in the event something goes wrong.** You need to blacklist the device from the generic USB hid driver in order for the perixxkbd driver to control it. ## Kernel Module ## If the USB hid driver is compiled as a kernel module you will need to create a quirks file and blacklist it there. You can determine if the driver is a module by running the following: lsmod | grep usbhid If `grep` finds something, it means that the driver is a module. Create a file called `/etc/modprobe.d/usbhid.conf` and add the following to it: options usbhid quirks=0x0c45:0x7603:0x0004 If you find that the generic USB driver is still taking the device, try changing the `0x0004` to a `0x0007`. ## Compiled into Kernel ## If the generic USB hid driver is compiled into the kernel, then the driver is not loaded as a module and setting the option via `modprobe` will not work. In this case you must pass the option to the driver via the grub boot loader. Create a new file in `/etc/default/grub.d/`. For example, you might call it `perixx1800keyboard.conf`. (If your grub package doesn't have this directory, just modify the generic `/etc/default/grub` configuration file): GRUB_CMDLINE_LINUX_DEFAULT='usbhid.quirks=0x0c45:0x7603:0x4' Then run `sudo update-grub` and reboot. Again, if you find that `0x4` doesn't work, try `0x7`. ## Add to initramfs ## On Archlinux the module has to be added to `/etc/mkinitcpio.conf`. Otherwise usbhid will fetch the keyboard before perixxkbd is loaded. Therefor add "perixxkbd" to the MODULES section and rebuild the initramfs with `sudo mkinitcpio -p linux`