pcan: pcan_xxxdev_rx(1) failure
pcan: pcan_xxxdev_rx(1) failure
Hi,
I'm using a 3.16.39 kernel with Xenomai 2.6.4 patches. I installed peak driver 7.14 and we used with a pcan-usb device without problems during long time.
One day, it suddenly stop working. Probably it was because I did some upgrade, or whatever. The error code I got was:
pcan: pcan_xxxdev_rx(1) failure
pcan: @offset 0: message decoding error -28
As the driver was a bit old I though that it could be a good idea to upgrade so I put 8.3.1. The question was that it worked but after reboot I got:
pcan_xxxdev_rx(1) failed err=-28
So, probably I'm doing some stupid mistake or something obvious that I don't see.
Any idea?
Thanks in advance,
Leopold
I'm using a 3.16.39 kernel with Xenomai 2.6.4 patches. I installed peak driver 7.14 and we used with a pcan-usb device without problems during long time.
One day, it suddenly stop working. Probably it was because I did some upgrade, or whatever. The error code I got was:
pcan: pcan_xxxdev_rx(1) failure
pcan: @offset 0: message decoding error -28
As the driver was a bit old I though that it could be a good idea to upgrade so I put 8.3.1. The question was that it worked but after reboot I got:
pcan_xxxdev_rx(1) failed err=-28
So, probably I'm doing some stupid mistake or something obvious that I don't see.
Any idea?
Thanks in advance,
Leopold
Re: pcan: pcan_xxxdev_rx(1) failure
just an clarification. I'm not using the Xenomai driver. Just the standard Linux driver. In any case, I have tested it with another kernels (non-RT) and it fails in the same way.
Best regards,
Leopold
Best regards,
Leopold
- PEAK-Support
- Sales & Support
- Posts: 1646
- Joined: Fri 10. Sep 2010, 19:34
Re: pcan: pcan_xxxdev_rx(1) failure
Please give us the results of:
as well as the FULL output of:
So it is not CAN-USB specific problem, it is USB specific problem.
Didi you use the system in a VM ?
If yes, you have to check that all "guest extension packs" are installed on that VM.
But, finally, we recommend you to run our driver in a native Linux system.
Code: Select all
$ uname -a
$ lsusb -d 0c72: -v
$ grep -i 0c72 /lib/modules/`uname -r`/modules.alias
Code: Select all
$ cat /proc/pcan
Is a msg that is displayed when processing msgs received from the PCAN-USB only failed.pcan: pcan_xxxdev_rx(1) failed err=-28
So it is not CAN-USB specific problem, it is USB specific problem.
Didi you use the system in a VM ?
If yes, you have to check that all "guest extension packs" are installed on that VM.
But, finally, we recommend you to run our driver in a native Linux system.
--------------------------------
PEAK-System Technik
Technical Support Team
support[at]peak-system.com
-------------------------------
PEAK-System Technik
Technical Support Team
support[at]peak-system.com
-------------------------------
Re: pcan: pcan_xxxdev_rx(1) failure
Code: Select all
$ uname -a
Linux grasp 4.9.0-0.bpo.2-amd64 #1 SMP Debian 4.9.18-1~bpo8+1 (2017-04-10) x86_64 GNU/Linux
Code: Select all
Linux spectra 3.16.0-4-amd64 #1 SMP Debian 3.16.39-1 (2016-12-30) x86_64 GNU/Linux
Code: Select all
$ lsusb -d 0c72: -v
Bus 004 Device 004: ID 0c72:000c PEAK System PCAN-USB
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 16
idVendor 0x0c72 PEAK System
idProduct 0x000c PCAN-USB
bcdDevice 1c.ff
iManufacturer 0
iProduct 3
iSerial 0
bNumConfigurations 3
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 46
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 200mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 4
bInterfaceClass 0 (Defined at Interface level)
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 20
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 20
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 46
bNumInterfaces 1
bConfigurationValue 2
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 394mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 4
bInterfaceClass 0 (Defined at Interface level)
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 20
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 20
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 46
bNumInterfaces 1
bConfigurationValue 3
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 200mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 4
bInterfaceClass 0 (Defined at Interface level)
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Bus 004 Device 003: ID 0c72:000c PEAK System PCAN-USB
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 16
idVendor 0x0c72 PEAK System
idProduct 0x000c PCAN-USB
bcdDevice 1c.ff
iManufacturer 0
iProduct 3
iSerial 0
bNumConfigurations 3
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 46
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 200mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 4
bInterfaceClass 0 (Defined at Interface level)
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 20
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 20
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 46
bNumInterfaces 1
bConfigurationValue 2
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 394mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 4
bInterfaceClass 0 (Defined at Interface level)
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 20
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 20
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 46
bNumInterfaces 1
bConfigurationValue 3
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 200mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 4
bInterfaceClass 0 (Defined at Interface level)
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Code: Select all
$ grep -i 0c72 /lib/modules/`uname -r`/modules.alias
alias usb:v0C72p0014d*dc*dsc*dp*ic*isc*ip*in* peak_usb
alias usb:v0C72p0011d*dc*dsc*dp*ic*isc*ip*in* peak_usb
alias usb:v0C72p0012d*dc*dsc*dp*ic*isc*ip*in* peak_usb
alias usb:v0C72p000Dd*dc*dsc*dp*ic*isc*ip*in* peak_usb
alias usb:v0C72p000Cd*dc*dsc*dp*ic*isc*ip*in* peak_usb
alias usb:v0C72p0014d*dc*dsc*dp*ic*isc*ip*in* pcan
alias usb:v0C72p0011d*dc*dsc*dp*ic*isc*ip*in* pcan
alias usb:v0C72p0012d*dc*dsc*dp*ic*isc*ip*in* pcan
alias usb:v0C72p000Dd*dc*dsc*dp*ic*isc*ip*in* pcan
alias usb:v0C72p000Cd*dc*dsc*dp*ic*isc*ip*in* pcan
Code: Select all
$ cat /proc/pcan
*------------- PEAK-System CAN interfaces (http://www.peak-system.com) -------------
*------------- Release_20170214_n (8.3.1) May 25 2017 12:47:49 --------------
*------------- [mod] [isa] [pci] [pec] [dng] [par] [usb] [pcc] --------------
*--------------------- 2 interfaces @ major 245 found -----------------------
*n -type- -ndev- --base-- irq --btr- --read-- --write- --irqs-- -errors- status
32 usb -NA- ffffffff 000 0x001c 00000000 00000000 00000000 00000000 0x0000
33 usb -NA- ffffffff 000 0x001c 00000000 00000000 00000000 00000000 0x0000
No, I'm not using a VM, I'm using a physical box.
Last edited by M.Gerber on Mon 29. May 2017, 12:40, edited 1 time in total.
Reason: Inserted Code tags for better readability
Reason: Inserted Code tags for better readability
Re: pcan: pcan_xxxdev_rx(1) failure
I have used again the peak-usb device and then:
Code: Select all
$ cat /proc/pcan
*------------- PEAK-System CAN interfaces (http://www.peak-system.com) -------------
*------------- Release_20170214_n (8.3.1) May 25 2017 12:47:49 --------------
*------------- [mod] [isa] [pci] [pec] [dng] [par] [usb] [pcc] --------------
*--------------------- 2 interfaces @ major 245 found -----------------------
*n -type- -ndev- --base-- irq --btr- --read-- --write- --irqs-- -errors- status
32 usb -NA- ffffffff 000 0x0014 0000020d 00000015 000031ac 00006105 0x0002
33 usb -NA- ffffffff 000 0x001c 00000000 00000000 00000000 00000000 0x0000
Last edited by M.Gerber on Mon 29. May 2017, 12:40, edited 1 time in total.
Reason: Inserted Code tag for better readability
Reason: Inserted Code tag for better readability
Re: pcan: pcan_xxxdev_rx(1) failure
Hi,
do you use any USB hubs or extension cables in your setup? What kind of CAN hardware/CAN cables do you use on your CAN system, and which baudrate do you use? (pcan32 uses 1Mbit/s while pcan33 is on 500k)
regards
Michael
do you use any USB hubs or extension cables in your setup? What kind of CAN hardware/CAN cables do you use on your CAN system, and which baudrate do you use? (pcan32 uses 1Mbit/s while pcan33 is on 500k)
regards
Michael
- S.Grosjean
- Software Development
- Posts: 357
- Joined: Wed 4. Jul 2012, 17:02
Re: pcan: pcan_xxxdev_rx(1) failure
Hello,
Generally speaking, the -28 error occurs when the Rx FIFO of the driver receiving messages from the hardware is full.
So it appears that the PCAN-USB is always sending messages to the driver and the application is not reading them. These messages can be CAN frames OR status messages. Can you tell us more about your application please? Does it always wait for read from the driver? What are these 525 messages read, please? Moreover, the above says that you have setup the PCAN-USB with a bitrate=1 Mbps. Are you certain that the equipment connected to your CAN bus are all setup with the same bit timings?
When you're running in failure, can you give us the result of this command, please :
Regards,
Stéphane
Generally speaking, the -28 error occurs when the Rx FIFO of the driver receiving messages from the hardware is full.
Your first line says your application has read 525 CAN msgs from the driver, while it has written 15 CAN messages on the CAN bus. Last column "'status" says your Rx FIFO is full (see pcan.h):$ cat /proc/pcan
*------------- PEAK-System CAN interfaces (http://www.peak-system.com) -------------
*------------- Release_20170214_n (8.3.1) May 25 2017 12:47:49 --------------
*------------- [mod] [isa] [pci] [pec] [dng] [par] [usb] [pcc] --------------
*--------------------- 2 interfaces @ major 245 found -----------------------
*n -type- -ndev- --base-- irq --btr- --read-- --write- --irqs-- -errors- status
32 usb -NA- ffffffff 000 0x0014 0000020d 00000015 000031ac 00006105 0x0002
33 usb -NA- ffffffff 000 0x001c 00000000 00000000 00000000 00000000 0x0000
Code: Select all
#define CAN_ERR_OVERRUN 0x0002 // overrun in receive buffer
When you're running in failure, can you give us the result of this command, please :
Code: Select all
$ for f in `ls /sys/class/pcan/pcanusb32/`; do echo -n "$f:"; cat /sys/class/pcan/pcanusb32/$f; done
Stéphane
— Stéphane
Re: pcan: pcan_xxxdev_rx(1) failure
I don't use any USB hub or extension cable.M.Maidhof wrote:Hi,
do you use any USB hubs or extension cables in your setup? What kind of CAN hardware/CAN cables do you use on your CAN system, and which baudrate do you use? (pcan32 uses 1Mbit/s while pcan33 is on 500k)
regards
Michael
I'm using a robotic hand (Allegro hand) connected directly to the USB-Can from peak.
We are using 1Mbit/s. We have two USB-Can and nothing is connected in the other USB.
Re: pcan: pcan_xxxdev_rx(1) failure
Yes, it's a simple application with a loop sending an receiving information about the state of the hand.S.Grosjean wrote:Hello,
Generally speaking, the -28 error occurs when the Rx FIFO of the driver receiving messages from the hardware is full.Your first line says your application has read 525 CAN msgs from the driver, while it has written 15 CAN messages on the CAN bus. Last column "'status" says your Rx FIFO is full (see pcan.h):$ cat /proc/pcan
*------------- PEAK-System CAN interfaces (http://www.peak-system.com) -------------
*------------- Release_20170214_n (8.3.1) May 25 2017 12:47:49 --------------
*------------- [mod] [isa] [pci] [pec] [dng] [par] [usb] [pcc] --------------
*--------------------- 2 interfaces @ major 245 found -----------------------
*n -type- -ndev- --base-- irq --btr- --read-- --write- --irqs-- -errors- status
32 usb -NA- ffffffff 000 0x0014 0000020d 00000015 000031ac 00006105 0x0002
33 usb -NA- ffffffff 000 0x001c 00000000 00000000 00000000 00000000 0x0000So it appears that the PCAN-USB is always sending messages to the driver and the application is not reading them. These messages can be CAN frames OR status messages. Can you tell us more about your application please?Code: Select all
#define CAN_ERR_OVERRUN 0x0002 // overrun in receive buffer
my problem is that this software was running during the last two years but some upgrade (??) made it failed. It could be a problem of the software or some hide incompatibility with the USB system.
Does it always wait for read from the driver? What are these 525 messages read, please? Moreover, the above says that you have setup the PCAN-USB with a bitrate=1 Mbps. Are you certain that the equipment connected to your CAN bus are all setup with the same bit timings?
When you're running in failure, can you give us the result of this command, please :Code: Select all
$ for f in `ls /sys/class/pcan/pcanusb32/`; do echo -n "$f:"; cat /sys/class/pcan/pcanusb32/$f; done
Code: Select all
adapter_name:PCAN-USB
@adapter_number:0
adapter_version:2.8
@base:0x0
btr0btr1:0x0014
bus_state:1
clock:8000000
ctrlr_number:0
dev:245:32
devid:255
errors:34325
hwtype:11
init_flags:0x00000002
irq:0
irqs:18292
minor:32
nom_bitrate:1000000
nom_brp:1
nom_sample_point:7500
nom_sjw:1
nom_tq:125
nom_tseg1:5
nom_tseg2:2
power:read:1185
rx_fifo_ratio:100.00
status:0x0002
subsystem:tx_fifo_ratio:0.00
type:usb
uevent:MAJOR=245
MINOR=32
DEVNAME=pcanusb32
write:681
Thanks for check it!!!
Last edited by M.Gerber on Mon 29. May 2017, 12:42, edited 1 time in total.
Reason: Inserted Code tag for better readability
Reason: Inserted Code tag for better readability
- S.Grosjean
- Software Development
- Posts: 357
- Joined: Wed 4. Jul 2012, 17:02
Re: pcan: pcan_xxxdev_rx(1) failure
Hi,
Could you please rebuild the pcan driver but in DEBUG mode, that is:
Remove current driver then load new (dbg) one:
Then, run your application. When it fails, do:
Then send us the file /tmp/pcan.txt please.
Regards,
Stéphane
Could you please rebuild the pcan driver but in DEBUG mode, that is:
Code: Select all
$ cd peak-linux-driver-8.3.1/driver
$ make clean
$ make DBG=DEBUG
$ sudo make install
Code: Select all
$ sudo rmmod pcan
$ sudo modprobe pcan
Code: Select all
$ dmesg | grep pcan > /tmp/pcan.txt
Regards,
Stéphane
— Stéphane