-
Notifications
You must be signed in to change notification settings - Fork 380
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
DigisparkCDC: Error "BOGUS urb xfer, pipe 3 != type 1" on Linux #16
Comments
I'm having the same problem. |
I've got the same problem on Fedora 23, any luck resolving this? uname -a |
+1, same issue |
+1, Same thing on openSUSE Leap 42.1 uname -a |
+1 |
Maybe someone can use this technique to debug this: https://m.youtube.com/watch?v=-NxoNdTj_7U |
I think I found what is an issue here. DigisparkCDC is using three endpoints and bulk transfer on low-speed device, which violates USB protocol (via http://www.recursion.jp/prose/avrcdc/). |
Thanks @paulfantom can you propose a fix? |
I was searching for a fix, but I came with nothing. Also programming USB shenanigans is way out of my knowledge. |
I think i found solution. DigiCDC is configured to create 1 interrupt endpoint, and 2 bulk endpoints. Bulk endpoints are forbidden for low speed usb (1,5Mbit/s). So this is a bug. Until now Linux kernel was forgiving, because some older hardware had the same bug in theirs firmware. It seems it's enough to change two exact same lines in DigiCDC.cpp. I don't know if this change is sufficient for full compliance with USB standard, but i have no more errors in linux logs :) Unfortunately there is possibility, that windows drivers should be also altered. I didn't tested that yet. Also interesting informations are here: http://www.recursion.jp/prose/avrcdc/driver.html |
Where do I find DigiCDC.cpp? I can't find it using the search for this repo. |
DigiCDC.cpp is part of DigiCDC library and it is installed somewhere in Arduino's directories. On windows xp i have it in: C:\Documents and Settings\My user\Local settings\appdata\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkCDC\ |
On which system is this working for you? On Ubuntu 16.04 I get immediate kernel module crashes in dmesg when I plug the device in and it loads the user program. |
Ok, you're right. After longer period of testing i see, that this changes in the code aren't sufficient. Update: I'll give up. I see no way to run CDC on two endpoints and without that there is no way to make it compatible with usb standards :/ I've successfully tested this on windows: https://learn.adafruit.com/trinket-fake-usb-serial/overview |
+1 |
@cnlohr to the rescue ;-) |
What? Not sure what I'm supposed to be doing here :-p AFAIK you aren't "allowed" to do a CDC device over low speed. |
Not sure where the DigisparkCDC project "lives", so posting this here.
I keep getting (lots of) "BOGUS urb xfer, pipe 3 != type 1" in dmesg on Linux.
When running the
DigisparkCDC > Print
sketch, then the characters on the pseudo-serial console are often garbled, the output looks likePossibly this is caused by something crashing the kernel module?
The text was updated successfully, but these errors were encountered: