Зашлите в апстрим, пожалуйста. Это делают через LKML или (лучше) через мейнтейнера соответствующей подсистемы. Я не уверен, но, видимо, HID CORE, www.kernel.org/doc/linux/MAINTAINERS
мейнтейнер подсистемы выясняется с помощью

scripts/get_maintainer.pl
gtmail.com в коде как почтовый адрес специально оставлен или опечатка?
а то редиректит на не очень хорошие ресурсы и хром ругается
Извиняюсь, опечатка. Поправлю чуть позже.
крайне мало информации о кодинге под ядро

Да вообще них*я нет. Удалось что-нибудь более менее перевариваемое найти? Поделитесь ссылками, пожалуйста.

Сам я разработчиком под ядро не являюсь, поэтому оценивать не берусь, но натыкался на такую книгу (переводы и т.д. / читать здесь). Она не то, чтобы прицельно про разработку драйверов — насколько я понимаю, человек изучал кодинг под ядро, читал исходники и документацию и попутно писал. То есть это не истина в последней инстанции, но может пригодиться — в том числе для развлечения почитать — там много всего описано. :)

Не удалось. Мне ковырять чужой код не впервой, я до того так же ковырял очень слабо документированную libopencm3, даже баг в криптогафии там нашел… Потому разобрался только по исходникам и обрывкам инфы в сети.
Замечено, что проекты на С почти сплошняком плохо документированны.
При работе с ядром есть папка doc там в принципе как отправная точка много чего есть. А читать код ядра удо, нее через lxr( тотже lxr.free-electrons.com например)
Вот они — героические люди, которые делают какую-то магию, чтобы разные непонятные железяки начинали работать. Спасибо) Присоединюсь к amarao — надо в апстрим отправить.
Мне кажется что в таком виде, с хаками вроде вакомовского VID в idev->id.vendor, в апстрим его никто не примет.
Да, не возьмут. Во-первых, уже есть родственный проект для других планшетов Huion, и надо было бы по-хорошему писать туда. Во-вторых, этот планшет очень схож по hid-репорту с Wacom Bamboo одной из серий, и надо бы не только модуль ядра писать, но и патч для Xf86-input-wacom — но там вообще темный лес, с какой стороны подходить даже непонятно, и еще более непонятно, как отлаживать без перезапуска Х… В-третьих, очень много хаков, от чего не все программы видят его — на гитхабе уже отписали, что в крите работает (я в крите и рисую, проверял только там), в блендере тоже, а вот в какой-то платной софтине для моделирования — нет, работает как мышка.
А если в готовом и уже рабочем коде драйвера убрать VID вакомовский и прописать, скажем от какого-нибудь другого планшета или вообще левый VID, которого нет в системе, то работать перестанет? А вообще, круто, да.
Да, будет ошибка libinput, что данный планшет чему-то там не соответствует внутри либы. А вот чему — я не понял, там, в libinput, проверка на наличие передаваемых от драйвера размеров и еще кое-чего. Все это передавал, но нет, не взлетало.
Очень удивило, что в гугле крайне мало информации о кодинге под ядро.

  • Linux Device Drivers, Greg Kroah-Hartman
  • Linux Kernel Development, Robert Love
  • Linux System Programming, Robert Love


Для поиска референсов и кто кого инициализирует нужно использовать LXR — например elixir.free-electrons.com/linux/latest/source
вот например твой hid_device и кто его использует elixir.free-electrons.com/linux/latest/ident/hid_device
чуть менее популярные вещи:
  • Advanced Linux Programming, Mark Mitchell
  • Essential Linux Device Drivers, Sreekrishnan Venkateswaran
  • Understanding the Linux Kernel, Daniel P. Bovet
также есть курс на степике stepik.org/course/2051. Сам его не слушал пока, но проходил другие курсы этого преподавателя, он классный.

ps. Ещё интересно почему этот пост на гиктаймсе, а не на хабре.
Извиняюсь, нет времени подробно вчитываться в статью. Можно коротко — где взяли информацию о самом устройстве, какой у него рабочий интерфейс?
Там же hid, что очень упрощает дело. xxd /dev/hidrawX и смотреть, что прилетает. Можно еще wireshark использовать, он умеет usb перехватывать и парсить.
То есть все устанавливали экспериментальным путем? Никакой официальной документации нет?
Нет конечно, какая документация… У производителя есть драйвер для Win10 бинарником и больше ничего. Hid не так сложно реверсить в общем случае.
Huion будет работать!
Вы отлично разобрались с тем как работают драйверы ввода, и заставили планшет работать, поздравляю :)!

Как я уже вам писал, .report_fixup вызывается для того чтобы драйвер мог подправить, или заменить HID report descriptor — структуру полученную с утройства, и, в теории, описывающую структуру посылаемых им reports. Функция несколько неудачно названа и скорее должна называться ".report_descriptor_fixup".

Большая часть документации находится в Documentation, затем в заголовках, а потом уже нужно читать сам код. В том числе смотрите Documentation/hid, include/linux/hid.h, drivers/hid/hid-core.c, drivers/hid/hid-input.c, и drivers/hid/usbhid.

Однако, было бы хорошо, если бы вы смогли помочь проекту DIGImend вместо того чтобы разрабатывать еще один драйвер. Таким образом вы могли бы получить лучше поддержку в userspace, скорее поддержку в upstream, и научились бы еще много чему. В частности нужно подтвердить способ инициализации вашего планшета, чтобы он работал с полным разрешением, и потестировать драйвер.
Да, я поддерживаю объединение драйверов, поскольку мое решение больше костыль. Не думаю, что будет быстро, но тем не менее, постараюсь помочь.
Инициализации у этого планшета вроде как нет, у меня есть полный дамп трафика между планшетом и драйвером windows — хост ничего не посылает устройству. Может быть, я плохо смотрел, не знаю, но вроде бы пакетов нет.
Почитайте наше обсуждение на GitHub. По-умолчанию планшет шлёт отчеты с report ID 0x0a и обрезанным разрешением, под Windows он шлёт отчеты с report ID 0x08 и полным разрешением. Предположительно инициализация выполняется запросом определённого string descriptor.
Да, запросами нужных string descriptors действительно получил другой репорт, 12 байт, и большее разрешение. Переписал драйвер, в вики добавил, что нужно сделать для инициализации.
Ага, хорошо. Значит работает. Теперь я смогу это в digimend-kernel-drivers добавить, а потом в ядро. Но всё это когда время найдется.
Да, не могли бы вы сузить набор запрашиваемых дескрипторов до минимально необходимого? Предположительно это должен быть 0xc8.
Только полноправные пользователи могут оставлять комментарии.
Войдите, пожалуйста.