arduino usb/com port issue
Gary Aitken
freebsd at dreamchaser.org
Sun May 31 21:45:54 UTC 2020
Hello Tomasz and Petter,
Thank you for your replies. Still working on this:
>>> I installed the arduino package on an 11.3-RELEASE system. When
>>> it comes up, the Tools/Serial Port menu item is greyed out,
>>> apparently because it doesn't know USB ports serve as com ports,
>>> or for some reason it can't find them. Is this something I need
>>> to configure somehow? Is this something that should be filed as
>>> a bug?
...
>> Did you check the permissions on /dev/usb/XXX ?
These are all set to crw-------
I tried changing all to crw-rw-rw- but still no arduino success
>> And output from usbconfig
# usbconfig -d ugen6.2 dump_device_desc
ugen6.2: <Arduino www.arduino.cc product 0x0043> at usbus6, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)
bLength = 0x0012
bDescriptorType = 0x0001
bcdUSB = 0x0110
bDeviceClass = 0x0002 <Communication device>
bDeviceSubClass = 0x0000
bDeviceProtocol = 0x0000
bMaxPacketSize0 = 0x0008
idVendor = 0x2341
idProduct = 0x0043
bcdDevice = 0x0001
iManufacturer = 0x0001 <Arduino (www.arduino.cc)>
iProduct = 0x0002 <retrieving string failed>
iSerialNumber = 0x00dc <75833353934351E05231>
bNumConfigurations = 0x0001
...
> As HPS noted in the first place check if you have valid permissions
> that allow you to read/write from/to usb device. I did a hint at the
> OpenOCD port:
>
> /usr/ports/devel/openocd/pkg-message
>
> To allow an ordinary user to acces any of the the hotplug USB
> interface add him/her to the operator group (pw groupmod operator -m
> username), then setup the devfs subsystem by adding these lines to
> the following files:
>
> ***/etc/devfs.rules: [localrules=10] add path 'ugen*' mode 0660 group
> operator add path 'usb/*' mode 0660 group operator add path 'usb'
> mode 0770 group operator
>
> ***/etc/rc.conf: devfs_system_ruleset="localrules"
$ cat /etc/rc.conf | grep devfs
# allow local rules as specified in /etc/devfs.rules (5)
devfs_system_ruleset="localrules"
$ cat /etc/devfs.rules
# Allow operator group to mount USB devices
[localrules=5]
add path 'da*' mode 0660 group operator
# for arduino hotplug USB
add path 'ugen*' mode 0660 group operator
add path 'usb/*' mode 0660 group operator
add path 'usb' mode 0770 group operator
Do I need to restart after changing devfs.rules?
That would be a bit painful at the moment; already works for
devices like camera and usb sticks but they are da* devices.
> I use MINICOM as the Terminal emulator. Type Ctrl+A then Z for
> command menu. Note that you will have to create a configuration for a
> given port in the first place (as root type `minicom -s /dev/cuaU0`
> set valid port name and parameters then save as the default
> configuration for that port).
I don't understand the need for MINICOM. I currently use xterm.
Will that work for the print output?
> I did not use that particular Arduino utility, but there may be a
> chance that it was written for Linux and it may suggest port name
> like /dev/ttyUSB0 instead /dev/cuaU0 as it is used in FreeBSD.
The "Serial Port" menu item is greyed out, as if it found none.
When I plug in the arduino, there are 7 new entries in /dev:
$ diff dev_noarduino.txt dev_arduino.txt
29a30,32
> cuaU0
> cuaU0.init
> cuaU0.lock
81a85,87
> ttyU0
> ttyU0.init
> ttyU0.lock
106a113
> ugen6.2
> In general on FreeBSD COM port over USB (aka Virtual-COM-Port) is
> handled by `ucom` kernel module (type `kldstat` to list loaded
> kernel modules), also it may use `umodem` or even `u3g` module. Those
> modules are loaded by `devd` system daemon based on USB descriptors
> when you plug a device. I just found a bug in pyOCD (Python module
> for ARM CPU debug) that prevents running GDB Server when `ucom`
> module is loaded for the VCP port on that board. pyOCD tries to
> unload the kernel module by default to gain access to the VCP using
> LibUSB but it lacks permissions to do so and the whole program stops
> with an exception. In that case simply unload selected modules and
> `service devd stop` for the time of testing. This may be also the
> case for you: 1. You lack permissions to access a resource so
> temporary try run as root and see if that works. 2. You may require
> some component that is already taken by other service/application.
$ kldstat
Id Refs Address Size Name
1 13 0xffffffff80200000 206c860 kernel
2 1 0xffffffff8226e000 15cf0 fuse.ko
3 1 0xffffffff82421000 2408 ums.ko
4 1 0xffffffff82424000 76cc tmpfs.ko
5 1 0xffffffff8242c000 1bc0 umodem.ko
6 1 0xffffffff8242e000 3c58 ucom.ko
I don't think I can run arduino as root as I can't connect to X as root;
do I need to reboot for the /etc/devfs.rules to take effect?
(will have to do some cleanup before trying that)
Thanks,
Gary
More information about the freebsd-usb
mailing list