There's a lot of problems with USB stack on Rapsberry Pi and developers are working hard to fix as many of them as possible. They introduce some kernel modules options (like dwc_otg.fiq_fix_enable) that enables those fixes from time to time. Most of them are being enabled by default in recent kernels so you don't want to know them in order to use them. It's always good to know what you can disable when troubleshooting problems, though. And it's good to know that you don't need them in your cmdline.txt anymore when cleaning it up or reinstalling your SD card.

So what is the list of all such options that and what is their meaning?

  • 1
    I understand what you're doing, but this isn't a question (except in the title). Perhaps move most of this information to your self-answer. – Jivings Sep 16 '12 at 11:41
  • 1
    Yes, self documenting. Is it better now? – Krzysztof Adamski Sep 16 '12 at 12:19
  • 1
    Looks good. Nice work – Jivings Sep 16 '12 at 17:32
  • This is a very good topic, especially in this early phase of the RaspPi. Can you also provide details of how to enable these options for completeness? – Beeblebrox Jan 20 '13 at 2:40
  • dwc_otg.speed -> 1 will limit USB speed to full speed 12Mbps (USB 1.1)
  • dwc_otg.lpm_enable -> 0 by default, it disalbes LPM support, never seen anyone with value 1 here but it's specified in default cmdline.txt
  • dwc_otg.fiq_fix_enable -> 1 (default now) give about 10% extra performance to ARM when USB is not busy by lowering the number of interrupts USB does
  • dwc_otg.microframe_schedule -> 1 (default now) This should fix the error when too many periodic endopoints are present
  • dwc_otg.nak_holdoff_enable -> 1 (default now) NAK holdoff schame, don't really know what it does

Are there any more?

  • dwc_otg.speed=1 seems to break a lot of keyboards. If you have a KB that doesn't break with this, please let me know here: raspberrypi.stackexchange.com/questions/4090/… – greggo Dec 24 '12 at 17:26
  • 1
    dwc_otg.fiq_fsm_enable=0, see here. – CrazyCoder May 14 '14 at 3:37
  • dwc_otg.nak_holdoff_enable=1 According to this it also reduces interrupts in certain cases. – Cerin Jan 20 '18 at 3:33

This USB controller has several features that can be controlled by module parameters. I found this document detailing each parameter and options available.

http://www.cl.cam.ac.uk/~atm26/ephemeral/rpi/dwc_otg/doc/html/module%20parameters.html (archive, September 2015)

It seems obvious that you can cripple your device if you set some of these options. Fortunately, fixing it is a matter of remounting your SD card elsewhere and editing the cmdline.txt file.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.