[Line6linux-devel] POD HD500x working
Status: Pre-Alpha
Brought to you by:
mgrabner
From: Hans P. M. <hm...@gm...> - 2017-06-09 03:35:40
|
Hi Andrej, good news!! I can capture and listen from my pod. I compare the lsusb from de x3 and I found that it has the same alternative setting issue than the hd500x, which is different from hd300 (I couldn't get one from h400 nor from h500). In x3 and 500x the altsetting is different for audio than for data. Since X3 is included in kernel 4.9, I decided to go over kernel 4.9 and use that code which also appear to be more updated than the one here. In podhd.c I copy the same configuration used for X3. The .ctr_if=1 is the difference from the others and it make the difference. This are the modifications I made: enum { LINE6_PODHD300, LINE6_PODHD400, LINE6_PODHD500_0, LINE6_PODHD500_1, LINE6_PODX3, LINE6_PODX3LIVE, LINE6_PODHD500X }; /* table of devices that work with this driver */ static const struct usb_device_id podhd_id_table[] = { /* TODO: no need to alloc data interfaces when only audio is used */ { LINE6_DEVICE(0x5057), .driver_info = LINE6_PODHD300 }, { LINE6_DEVICE(0x5058), .driver_info = LINE6_PODHD400 }, { LINE6_IF_NUM(0x414D, 0), .driver_info = LINE6_PODHD500_0 }, { LINE6_IF_NUM(0x414D, 1), .driver_info = LINE6_PODHD500_1 }, { LINE6_IF_NUM(0x414A, 0), .driver_info = LINE6_PODX3 }, { LINE6_IF_NUM(0x414B, 0), .driver_info = LINE6_PODX3LIVE }, { LINE6_IF_NUM(0x4159, 0), .driver_info = LINE6_PODHD500X }, {} }; [LINE6_PODHD500X] = { .id = "PODHD500X", .name = "POD HD500x", .capabilities = LINE6_CAP_CONTROL | LINE6_CAP_PCM | LINE6_CAP_HWMON | LINE6_CAP_IN_NEEDS_OUT, .altsetting = 1, .ep_ctrl_r = 0x81, .ep_ctrl_w = 0x01, .ctrl_if = 1, .ep_audio_r = 0x86, .ep_audio_w = 0x02, }, I still get some errors/warning in dmesg, the maxpacket are the data ep so that is data. The "receive length failed (error -11)" don't know what it is, maybe initialization? Because it only appear this two times. Here is dmesg output: [ 4001.944114] usb 1-3: new high-speed USB device number 11 using ehci-pci [ 4002.063668] usb 1-3: config 1 interface 1 altsetting 0 bulk endpoint 0x1 has invalid maxpacket 64 [ 4002.063677] usb 1-3: config 1 interface 1 altsetting 0 bulk endpoint 0x81 has invalid maxpacket 64 [ 4002.064779] usb 1-3: New USB device found, idVendor=0e41, idProduct=4159 [ 4002.064785] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 4002.064790] usb 1-3: Product: POD HD500X [ 4002.064794] usb 1-3: Manufacturer: Line 6 [ 4002.067896] snd_usb_podhd 1-3:1.0: Line 6 POD HD500x found [ 4002.069846] snd_usb_podhd 1-3:1.0: Line 6 POD HD500x now attached [ 4002.577334] snd_usb_podhd 1-3:1.0: receive length failed (error -11) [ 4002.579660] snd_usb_podhd 1-3:1.0: receive length failed (error -11) I believe this should be added to the podhd.c delivered in the kernel but I dont know how to do that. Thanks a lot for you help. |