Hi, I made some more experiments and compared the data from the usb_urb and what tcpdump sees. The byte order is different in the dumps. The correct ip packet ends with "92939495" / "95949392". This data is present in both usb_urbs, but gets cut away in the broken ip packet. What is the data after "95949392" in the usb_urb? Is this some kind of footer or checksum? The working packet has a footer of 8 bytes and the broken only 4 bytes?!? Working dump: 000005e0: 65646362 69686766 6d6c6b6a 71706f6e 75747372 79787776 7d7c7b7a 81807f7e bcdefghijklmnopqrstuvwxyz{|}~... 00000600: 85848382 89888786 8d8c8b8a 91908f8e 95949392 e4818dc6 b6a7742b ........................+t.. Broken dump: 000005e0: 65646362 69686766 6d6c6b6a 71706f6e 75747372 79787776 7d7c7b7a 81807f7e bcdefghijklmnopqrstuvwxyz{|}~... 00000600: 85848382 89888786 8d8c8b8a 91908f8e 95949392 98ce2927 ....................').. tcpdump working: 0x0580: 56575859 5a5b5c5d 5e5f6061 62636465 VWXYZ[\]^_`abcde 0x0590: 66676869 6a6b6c6d 6e6f7071 72737475 fghijklmnopqrstu 0x05a0: 76777879 7a7b7c7d 7e7f8081 82838485 vwxyz{|}~....... 0x05b0: 86878889 8a8b8c8d 8e8f9091 92939495 ................ tcpdump broken: 0x05b0: 86878889 8a8b8c8d 8e8f9091 ............ Thanks, Artem