Поддержка USB джойстика

Пробую подключить к контроллеру Wirenboard 7 USB джойстик Logitech F710. Джойстик видится нормально в lsusb, но отсутсвует в /dev/input. Команда modprobe joydev дает следующий вывод:
modprobe: FATAL: Module joydev not found in directory /lib/modules/5.10.35-wb155
Возможно ли как-то добавить модуль joydev для обеспечения поддержки джойстиков?

1 лайк

Добрый день.
Мы не планировали поддерживать подобные устройства “из коробки”… Да, можно собрать модуль ядра: Linux Kernel Modules, linux-headers например.

Сборка ядра по данной инструкции приводит к окирпичиванию устройства.

Задаваемые флаги:
CONFIG_INPUT_JOYDEV=y
CONFIG_INPUT_JOYSTICK=y
CONFIG_DEBUG_INFO_BTF=m - с ним выдавал ошибку.

После сборки deb-файл на устройстве распаковывается командой dpkg -i package

Довольно странно. А что выводится в Debug при загрузке с ним? Ну и - если собирать с конфигурацией по-умолчанию?

[EC] Starting up…

[EC] Wiren Board Embedded Controller
[EC] Firmware version: 1.1.1
[EC] Git info: 59e3ebd_HEAD
[EC] Power on reason: Power button
[EC] RTC time: 2024-03-20 15:29:25
[EC] Board temperature: 36.9C
[EC] Vin: 24.3V, USB Net: 0.5V, USB Console: 5.0V
[EC] Turning on the main CPU; all future debug messages will originate from the CPU.

U-Boot SPL 2021.10-wb1.7.0-gc221f7953f (Jul 26 2023 - 08:32:47 +0000)
DRAM: 2048 MiB
Trying to boot from MMC2

U-Boot 2021.10-wb1.7.0-gc221f7953f (Jul 26 2023 - 08:32:47 +0000)

CPU: Allwinner R40 (SUN8I 1701)
Model: Wiren Board rev. 7.2.0 (A40i)
I2C: ready
DRAM: 2 GiB
MMC: mmc@1c0f000: 0, mmc@1c11000: 1
Loading Environment from MMC… OK
In: serial@1c28000
Out: serial@1c28000
Err: serial@1c28000
Will only keep env vars: mmcpart bootcount upgrade_available uenvcmd wb_webupd otp_program otp_aes_program

Info: input data size = 142 = 0x8E

bootcount=0
mmcpart=2
uenvcmd=true ; echo reset environment; env default -a; setenv mmcdev 0; saveenv; bmode emmc; reset
upgrade_available=0

Environment size: 142/131068 bytes

Resetting to default environment

Info: input data size = 142 = 0x8E

Net: No ethernet found.
Hit key to stop autoboot in 1s

Info: input data size = 4281 = 0x10B9

switch to partitions #0, OK
mmc1(part 0) is current device
eMMC found on device 1
Press FW button to enter firmware update mode

326 bytes read in 2 ms (159.2 KiB/s)
Importing environment from 0x42000000…
Checking if uenvcmd is set …
test - minimal test like /bin/sh

Usage:
test [args…]
Running default loadzimage …
7700992 bytes read in 204 ms (36 MiB/s)

MMC read: dev # 1, block # 2016, count 32 … 32 blocks read: OK
Reading overlays list from eMMC
Reading factory fdt name from eMMC
Loading factory fdt sun8i-r40-wirenboard742
Failed to load ‘/boot/dtbs/sun8i-r40-wirenboard742.dtb’
Loading fdt_file /boot/dtbs/sun8i-r40-wirenboard720.dtb
Failed to load ‘/boot/dtbs/sun8i-r40-wirenboard720.dtb’
libfdt fdt_check_header(): FDT_ERR_BADMAGIC
254 bytes read in 2 ms (124 KiB/s)
Applying DT overlay temp-industrial
failed on fdt_overlay_apply(): FDT_ERR_NOTFOUND
base fdt does did not have a /symbols node
make sure you’ve compiled with -@
Failed to apply overlay temp-industrial
Some overlays are not applied, booting in failsafe
Loading factory fdt sun8i-r40-wirenboard742
Failed to load ‘/boot/dtbs/sun8i-r40-wirenboard742.dtb’
Loading fdt_file /boot/dtbs/sun8i-r40-wirenboard720.dtb
Failed to load ‘/boot/dtbs/sun8i-r40-wirenboard720.dtb’
libfdt fdt_check_header(): FDT_ERR_BADMAGIC
libfdt fdt_path_offset() returned FDT_ERR_BADMAGIC
Booting from mmc …
Kernel image @ 0x42000000 [ 0x000000 - 0x758200 ]
ERROR: Did not find a cmdline Flattened Device Tree
Could not find a valid device tree
=>

[EC] Watchdog is timed out, reset power.

При попытке собрать вручную по команде
make KBUILD_OUTPUT=.build-wb7 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage dtbs modules -j4
также не создает папку dtb в .build-wb7/arch/arm/boot/

Сейчас проверю, соберу.

Собралось.


Отправляю получившийся linux-image-wb7_5.10.35-wb163~my~test~kernel_armhf.deb на контрорлер
ну и ставлю:

apt install -f ./linux-image-wb7_5.10.35-wb163~my~test~kernel_armhf.deb 
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Note, selecting 'linux-image-wb7' instead of './linux-image-wb7_5.10.35-wb163~my~test~kernel_armhf.deb'
Suggested packages:
  linux-firmware-image-wb7
The following packages will be upgraded:
  linux-image-wb7
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/27.7 MB of archives.
After this operation, 6,634 kB of additional disk space will be used.
Get:1 /mnt/data/root/linux-image-wb7_5.10.35-wb163~my~test~kernel_armhf.deb linux-image-wb7 armhf 5.10.35-wb163~my~test~kernel [27.7 MB]
(Reading database ... 31690 files and directories currently installed.)
Preparing to unpack .../linux-image-wb7_5.10.35-wb163~my~test~kernel_armhf.deb ...
Unpacking linux-image-wb7 (5.10.35-wb163~my~test~kernel) over (5.10.35-wb159) ...
Setting up linux-image-wb7 (5.10.35-wb163~my~test~kernel) ...
N: Download is performed unsandboxed as root as file '/mnt/data/root/linux-image-wb7_5.10.35-wb163~my~test~kernel_armhf.deb' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)

Перезапускаюсь:

uname -a
Linux wirenboard-AWWCDXFH 5.10.35-wb163 #2 SMP Thu Mar 21 20:00:49 MSK 2024 armv7l GNU/Linux

Как и ожидалось.
В общем - советую первым делом собрать ядро без изменений - проверить как оно запускается.

Собрали на другом ПК в конфигурации
CONFIG_INPUT_JOYDEV=m
CONFIG_INPUT_JOYSTICK=y

Исользование CONFIG_DEBUG_INFO_BTF=m по какой-то причине не составляет файлы device tree, a использование его по умолчанию приводит к ошибкам на конкретном ПК…