LINUX.ORG.RU

История изменений

Исправление Deleted, (текущая версия) :

Купил клавиатуру HP Wireless Keyboard 600.

А какое полное название этой клавиатуры? Гуглится только «HP Pavilion Wireless Keyboard 600», это она?

[ 1.370666] usb 1-1: Product: HP Wireless Keyboard Mouse Kit

Это чисто клавиатура или мышка там тоже в комплекте?

Насторожило, что более HID модулей нет. Сделал предположение, что драйвера грузятся как то подругому, но информации не нашел.

Основные модули hid в федоре вкопилированы в ядро и всегда загружены. lsmod показывает только модули ядра, которые загружаются отдельно от самого ядра. Все модули (и отдельные и вкомпиленные) можно посмотреть в /sys/module/.

Еще проверил usbmon и при нажатии на клавишу q на Defender oscar 600 получил следующиее:

А какой USB ID у Defender oscar 600? А то может для неё в ядре тоже какие-то специальные костыли приделаны.

Я подумал, что необходим именно драйвер HID_Primax, который нашел в системе. Сразу попробовал загрузить модуль:

...

Также нашел опцию GONFIG_HID_PRIMAX=m и опцию CONFIG_HID_GENERIC=y в /boot/config-4.20.5-200.fc29.x86_64 Пробовал CONFIG_HID_PRIMAX=y, вслепую так как информацию не нашел.

/boot/config-* - это конфиг *сборки* ядра. Изменения в нём не имеют силы, пока не положишь его в исходники ядра и не запустишь сборку =).

Теперь по поводу модуля hid-primax: этот модуль предназначен для другого устройства, с USB ID 0461:4E05 (у твоей клавиатуры - 0461:4e90):

$ modinfo hid-primax | grep alias
alias:          hid:b0003g*v00000461p00004E05
Просто добавление его внутрь ядра (=y вместо =m в конфиге ядра) ничего не даст. Он будет всегда загружен, но использоваться конкретно для твоего устройства всё равно не будет. Если есть желание потестить как будет работать твоя клавиатура с этим модулем, то нужно пересобрать ядро вот с таким патчем:
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index 24f846d67478..61d1f6cade3f 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -1221,7 +1221,8 @@
 
 #define USB_VENDOR_ID_PRIMAX	0x0461
 #define USB_DEVICE_ID_PRIMAX_MOUSE_4D22	0x4d22
-#define USB_DEVICE_ID_PRIMAX_KEYBOARD	0x4e05
+#define USB_DEVICE_ID_PRIMAX_KEYBOARD_4E05	0x4e05
+#define USB_DEVICE_ID_PRIMAX_KEYBOARD_4E90	0x4e90
 #define USB_DEVICE_ID_PRIMAX_REZEL	0x4e72
 #define USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_4D0F	0x4d0f
 #define USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_4E22	0x4e22
diff --git a/drivers/hid/hid-primax.c b/drivers/hid/hid-primax.c
index 3a1c3c4c50dc..b3abee04eb5c 100644
--- a/drivers/hid/hid-primax.c
+++ b/drivers/hid/hid-primax.c
@@ -65,7 +65,8 @@ static int px_raw_event(struct hid_device *hid, struct hid_report *report,
 }
 
 static const struct hid_device_id px_devices[] = {
-	{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_KEYBOARD) },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_KEYBOARD_4E05) },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_KEYBOARD_4E90) },
 	{ }
 };
 MODULE_DEVICE_TABLE(hid, px_devices);
diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
index 94088c0ed68a..ecc90d09aeb1 100644
--- a/drivers/hid/hid-quirks.c
+++ b/drivers/hid/hid-quirks.c
@@ -562,7 +562,8 @@ static const struct hid_device_id hid_have_special_driver[] = {
 	{ HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, HID_ANY_ID) },
 #endif
 #if IS_ENABLED(CONFIG_HID_PRIMAX)
-	{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_KEYBOARD) },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_KEYBOARD_4E05) },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_KEYBOARD_4E90) },
 #endif
 #if IS_ENABLED(CONFIG_HID_PRODIKEYS)
 	{ HID_USB_DEVICE(USB_VENDOR_ID_CREATIVELABS, USB_DEVICE_ID_PRODIKEYS_PCMIDI) },
Я сейчас запущу сборку RPMок под федору с патченным ядром, но сборка займёт какое-то время. Напиши, если есть желание этот пачт потестить.

P.S. По выводу usbmon и исходникам hid-primax, я не понимаю как hid-primax может помочь. Но мало ли...

Исходная версия Deleted, :

Купил клавиатуру HP Wireless Keyboard 600.

А какое полное название этой клавиатуры? Гуглится только «HP Pavilion Wireless Keyboard 600», это она?

[ 1.370666] usb 1-1: Product: HP Wireless Keyboard Mouse Kit

Это чисто клавиатура или мышка там тоже в комплекте?

Насторожило, что более HID модулей нет. Сделал предположение, что драйвера грузятся как то подругому, но информации не нашел.

Основные модули hid в федоре вкопилированы в ядро и всегда загружены. lsmod показывает только модули ядра, которые загружаются отдельно от самого ядра. Все модули (и отдельные и вкомпиленные) можно посмотреть в /sys/module/.

Еще проверил usbmon и при нажатии на клавишу q на Defender oscar 600 получил следующиее:

А какой USB ID у Defender oscar 600? А то может для неё в ядре тоже какие-то специальные костыли приделаны.

Я подумал, что необходим именно драйвер HID_Primax, который нашел в системе. Сразу попробовал загрузить модуль:

...

Также нашел опцию GONFIG_HID_PRIMAX=m и опцию CONFIG_HID_GENERIC=y в /boot/config-4.20.5-200.fc29.x86_64 Пробовал CONFIG_HID_PRIMAX=y, вслепую так как информацию не нашел.

/boot/config-* - это конфиг *сборки* ядра. Изменения в нём не имеют силы, пока не положишь их в исходники ядра и не запустишь сборку =).

Теперь по поводу модуля hid-primax: этот модуль предназначен для другого устройства, с USB ID 0461:4E05 (у твоей клавиатуры - 0461:4e90):

$ modinfo hid-primax | grep alias
alias:          hid:b0003g*v00000461p00004E05
Просто добавление его внутрь ядра (=y вместо =m в конфиге ядра) ничего не даст. Он будет всегда загружен, но использоваться конкретно для твоего устройства всё равно не будет. Если есть желание потестить как будет работать твоя клавиатура с этим модулем, то нужно пересобрать ядро вот с таким патчем:
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index 24f846d67478..61d1f6cade3f 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -1221,7 +1221,8 @@
 
 #define USB_VENDOR_ID_PRIMAX	0x0461
 #define USB_DEVICE_ID_PRIMAX_MOUSE_4D22	0x4d22
-#define USB_DEVICE_ID_PRIMAX_KEYBOARD	0x4e05
+#define USB_DEVICE_ID_PRIMAX_KEYBOARD_4E05	0x4e05
+#define USB_DEVICE_ID_PRIMAX_KEYBOARD_4E90	0x4e90
 #define USB_DEVICE_ID_PRIMAX_REZEL	0x4e72
 #define USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_4D0F	0x4d0f
 #define USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_4E22	0x4e22
diff --git a/drivers/hid/hid-primax.c b/drivers/hid/hid-primax.c
index 3a1c3c4c50dc..b3abee04eb5c 100644
--- a/drivers/hid/hid-primax.c
+++ b/drivers/hid/hid-primax.c
@@ -65,7 +65,8 @@ static int px_raw_event(struct hid_device *hid, struct hid_report *report,
 }
 
 static const struct hid_device_id px_devices[] = {
-	{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_KEYBOARD) },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_KEYBOARD_4E05) },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_KEYBOARD_4E90) },
 	{ }
 };
 MODULE_DEVICE_TABLE(hid, px_devices);
diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
index 94088c0ed68a..ecc90d09aeb1 100644
--- a/drivers/hid/hid-quirks.c
+++ b/drivers/hid/hid-quirks.c
@@ -562,7 +562,8 @@ static const struct hid_device_id hid_have_special_driver[] = {
 	{ HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, HID_ANY_ID) },
 #endif
 #if IS_ENABLED(CONFIG_HID_PRIMAX)
-	{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_KEYBOARD) },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_KEYBOARD_4E05) },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_KEYBOARD_4E90) },
 #endif
 #if IS_ENABLED(CONFIG_HID_PRODIKEYS)
 	{ HID_USB_DEVICE(USB_VENDOR_ID_CREATIVELABS, USB_DEVICE_ID_PRODIKEYS_PCMIDI) },
Я сейчас запущу сборку RPMок под федору с патченным ядром, но сборка займёт какое-то время. Напиши, если есть желание этот пачт потестить.

P.S. По выводу usbmon и исходникам hid-primax, я не понимаю как hid-primax может помочь. Но мало ли...