Every time I want to run a new version of the Linux Kernel I have to patch it and build it myself, because of a trivial failure to recognise the PCI ids of my ath3k chipset for what it is.  Really: where does one send this kind of thing?

I don't have any interest in subscribing to LKML or anything like that, but there doesn't seem to be any real alternative from what I read in the kernel documentation.

I usually just assume that eventually someone with commit abilities will get hardware similar enough to mine to make these fixes, but it gets less likely over time, and for this to be a problem you'd have to desire that bluetooth should work. Wanting bluetooth took me a good six months after buying the laptop for that to be the case, so maybe it's just an obscure problem.

 diff -ru linux-3.10/drivers/bluetooth/ath3k.c linux-3.10-awm/drivers/bluetooth/ath3k.c
 --- linux-3.10/drivers/bluetooth/ath3k.c 2013-07-01 10:13:29.000000000 +1200
 +++ linux-3.10-awm/drivers/bluetooth/ath3k.c 2013-07-08 08:08:12.323884838 +1200
 @@-77,6 +77,7 @@
   { USB_DEVICE(0x0CF3, 0x3004) },
   { USB_DEVICE(0x0CF3, 0x3008) },
   { USB_DEVICE(0x0CF3, 0x311D) },
 + { USB_DEVICE(0x0CF3, 0x311F) },
   { USB_DEVICE(0x0CF3, 0x817a) },
   { USB_DEVICE(0x13d3, 0x3375) },
   { USB_DEVICE(0x04CA, 0x3004) },
 @@-114,6 +115,7 @@
   { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 },
   { USB_DEVICE(0x0cf3, 0x3008), .driver_info = BTUSB_ATH3012 },
   { USB_DEVICE(0x0cf3, 0x311D), .driver_info = BTUSB_ATH3012 },
 + { USB_DEVICE(0x0cf3, 0x311F), .driver_info = BTUSB_ATH3012 },
   { USB_DEVICE(0x0CF3, 0x817a), .driver_info = BTUSB_ATH3012 },
   { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
   { USB_DEVICE(0x04ca, 0x3004), .driver_info = BTUSB_ATH3012 },
 diff -ru linux-3.10/drivers/bluetooth/btusb.c linux-3.10-awm/drivers/bluetooth/btusb.c
 --- linux-3.10/drivers/bluetooth/btusb.c 2013-07-01 10:13:29.000000000 +1200
 +++ linux-3.10-awm/drivers/bluetooth/btusb.c 2013-07-08 08:08:36.767524318 +1200
 @@-137,6 +137,7 @@
   { USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 },
   { USB_DEVICE(0x0cf3, 0x3008), .driver_info = BTUSB_ATH3012 },
   { USB_DEVICE(0x0cf3, 0x311d), .driver_info = BTUSB_ATH3012 },
 + { USB_DEVICE(0x0cf3, 0x311f), .driver_info = BTUSB_ATH3012 },
   { USB_DEVICE(0x0cf3, 0x817a), .driver_info = BTUSB_ATH3012 },
   { USB_DEVICE(0x13d3, 0x3375), .driver_info = BTUSB_ATH3012 },
   { USB_DEVICE(0x04ca, 0x3004), .driver_info = BTUSB_ATH3012 },