LINUX.ORG.RU

Подключение полётного контроллера Naze32 в Linux.

 , ,


0

3

Naze32 это полётный контроллер для квадрокоптеров. Дрова для 4 ведра вроде есть. Согласно мана ставятся так:

Ubuntu:
1. make ( your cp210x driver )
2. cp cp210x.ko to /lib/modules/<kernel-version>/kernel/drivers/usb/serial
3. insmod /lib/modules/<kernel-version/kernel/drivers/usb/serial/usbserial.ko
4. insmod cp210x.ko

RedHat:
1. yum update kernel*  //need to update the kernel first otherwise your header won't match
2. yum install kernel-devel kernel-headers  //get the devel and header packages.
3. reboot  //your build link should be fixed after your system come back
4. make ( your cp210x driver )  // should be able to build successfully at this point
5. cp cp210x.ko to /lib/modules/<kernel-version>/kernel/drivers/usb/serial
6a. insmod /lib/modules/<kernel-version/kernel/drivers/usb/serial/usbserial.ko
6. insmod cp210x.ko
7. sudo chmod 666 /dev/ttyUSB0
8. sudo chmod 666 /dev/ttyUSB1
Однако файл /lib/modules/<kernel-version/kernel/drivers/usb/serial/usbserial.ko не создается и соответственно insmod сделать не представляется возможным. Где взять этот файл в душе не знаю. Кто-нибудь подключал это в Linux?
Содержание make файла: https://pastebin.com/Xr8PnjSY

★★★★★

Последнее исправление: Promusik (всего исправлений: 1)

sudo make

Выдает это:

make -C /lib/modules/`uname -r`/build M= modules
make[1]: вход в каталог «/usr/src/linux-headers-4.15.0-46-generic»
make[2]: *** Нет правила для сборки цели «arch/x86/entry/syscalls/syscall_32.tbl», требуемой для «arch/x86/include/generated/asm/syscalls_32.h».  Останов.
arch/x86/Makefile:256: recipe for target 'archheaders' failed
make[1]: *** [archheaders] Error 2
make[1]: выход из каталога «/usr/src/linux-headers-4.15.0-46-generic»
Makefile:7: recipe for target 'all' failed
make: *** [all] Error 2

Promusik ★★★★★
() автор топика

usbserial.ko он в ядре есть

find /lib/modules/ -name "*usbserial*"
/lib/modules/4.19.23-gentoo/kernel/drivers/usb/serial/usbserial.ko
grep CONFIG_USB_SERIAL /boot/config-4.19.23-gentoo
CONFIG_USB_SERIAL=m
...
проверь zgrep CONFIG_USB_SERIAL /proc/config.gz а дальше я хз

Deleted
()
Ответ на: комментарий от Deleted

/proc/config.gz

Там нет такого файла.

zgrep CONFIG_USB_SERIAL /proc/config.gz

gzip: /proc/config.gz: No such file or directory

Ты чего хотел добиться этой командой?

Promusik ★★★★★
() автор топика

а что, cp210 еще штатно в ядре не поддерживается?

slapin ★★★★★
()
Ответ на: комментарий от Promusik

Ты чего хотел добиться этой командой?

ничего, это один из способов посмотреть конфиг ядра может там и cp210x есть, кстати да

grep -i cp210x /boot/config-$(uname -r)
# CONFIG_USB_SERIAL_CP210X is not set

Deleted
()

Модуль cp210x в ядре уже очень давно из коробки. В ядрах всех человеческих дистрибутивов этот модуль уже собран и тоже идёт из коробки.

Если у тебя самосборное ядро и ты забыл включить этот модуль при сборке - так пересобери же уже своё ядро.

Если модуль есть, но при подключении устройства ничего не происходит - показывай вывод lsusb и dmesg.

Deleted
()
Ответ на: комментарий от Deleted

grep -i cp210x /boot/config-$(uname -r) grep: /boot/config-5.0.0-arch1-1-ARCH: Нет такого файла или каталога

Promusik ★★★★★
() автор топика
Ответ на: комментарий от Deleted

Т.е. ты хочешь сказать что при бубнтовском 4.15.0-46 или арчевском 5.0.0 cp210x должен из коробки работать и ничего качать и ставить не нужно? Странно но они же почему-то пишут:

This bundle contains a modified CP210x driver for the 4.10.0 kernel (Ubuntu 17.04).

It contains:

- Support for the CP2102N

NOTE: This driver is an example of how to perform GPIO operations within the CP210x driver since the driver on kernel.org does not support GPIO at this time. This driver has only been written and tested on the Linux 3.13.0 kernel on Ubuntu 14.04. This driver is a modified version of the existing driver in the Linux 3.13.0 kernel, which is maintained at kernel.org. It is recommened to use the driver there that matches your specific kernel version:

http://www.kernel.org

До дома дойду и посмотрю вывод lsusb и dmesg, но из коробки хромоприложение Cleanflight не увидело полётного контроллера, говоря про not connect.

Promusik ★★★★★
() автор топика
Ответ на: комментарий от Deleted
sudo insmod cp210x*.ko


Первый раз вывода никакого не было. А потом стал писать

insmod: ERROR: could not insert module cp210x.ko: File exists

Это значит что-то произошло? Или это глюк? (просто нет возможности сейчас прямо контроллер воткнуть)

Promusik ★★★★★
() автор топика
Ответ на: комментарий от Promusik

Т.е. ты хочешь сказать что при бубнтовском 4.15.0-46 или арчевском 5.0.0 cp210x должен из коробки работать и ничего качать и ставить не нужно?

USB-to-Serial должен работать из коробки. Возможно у твоего девайса какой-то нестандартный USB ID, но к драйверу их можно добавлять даже без пересборки.

This driver is an example of how to perform GPIO operations within the CP210x driver since the driver on kernel.org does not support GPIO at this time

Поддержка GPIO, если она реально тебе нужна, раньше отсутствовала для большинства чипов, но я видел патчи в LKML относительно недавно. Вроде они вошли в 5.0. Хотя тут могу ошибаться.

В общем, ждём lsusb и dmesg.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Promusik

Это значит что-то произошло?

Модуль успешно загрузился в первый раз. Во второй раз ядро сказало, что такой модуль уже загружен.

Deleted
()
Ответ на: комментарий от Deleted

Ладно, через часа 4 принесу арченоут домой и попробую глянуть

Promusik ★★★★★
() автор топика
Ответ на: комментарий от Deleted

lsusb Bus 003 Device 002: ID 8087:8000 Intel Corp. Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 001 Device 002: ID 8087:8008 Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 006: ID 0cf3:3004 Qualcomm Atheros Communications AR3012 Bluetooth 4.0
Bus 002 Device 004: ID 5986:0295 Acer, Inc 
Bus 002 Device 003: ID 058f:6366 Alcor Micro Corp. Multi Flash Reader
Bus 002 Device 002: ID 0e8f:00a7 GreenAsia Inc. 
Bus 002 Device 007: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP2102/CP2109 UART Bridge Controller [CP210x family]
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
dmesg | grep CP210
[   61.043077] usb 2-2: Product: CP2104 USB to UART Bridge Controller
Т.е. он как бы есть, но хромоприложение cleanflight его не видит

Promusik ★★★★★
() автор топика
Последнее исправление: Promusik (всего исправлений: 1)
Ответ на: комментарий от Promusik

Значит драйвер работает.

Посмотри какие права на этом устройстве. Обычно для доступа к последовательным портам нужно юзера добавить в группу dialout.

Deleted
()
Ответ на: комментарий от Promusik

Добавил в группу, но всё так же. Более того, группы не было - пришлось создать.

Нет, это не так работает. Удаляй обратно и смотри какой владелец и группа у /dev/ttyUSB0.

В федоре это выглядит примерно так:

crw-rw----. 1 root dialout 4, 64 Feb 27 17:30 /dev/ttyS0

Deleted
()
Ответ на: комментарий от Deleted
crw-rw----  1 root   uucp      188,   0 мар 12 21:18 ttyUSB0
Promusik ★★★★★
() автор топика
Ответ на: комментарий от Promusik

Правильнее было бы в данном случае добавить юзера в группу uucp.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.