# USB serial adapter, cu write: Device not configured



## fabiodive (Mar 18, 2012)

Hello people!

I write you because I have got a problem with the uplcom driver on FreeBSD 9.0, I tried a lot of different things, read all I found, man pages, forums, irc, google but still not able to solve my problem. I need to connect to my remote Alix board, the remote console setup is 19200 8N1. I am using a short USB Prolific Tec.. serial cable adapter with a NULL modem cable, the last one plugged one side to the Alix board, the other side to the adapter cable.

Under Linux Debian everything is fine, so the hardware and cables should be ok, under Linux I used minicom and cu and tip without problems. With FreeBSD and NetBSD, big problems..the result is always the same, I can receive but I cannot transmit.

(working as root)

```
*cu -t -s 19200 -l /dev/cuaU0
write: Device not configured
```
(I can't transmit but I can receive the output if I reboot the remote alix board)

```
*minicom
test1 ----> Cannot open /dev/ttyU0!
test2 ----> Cannot open /dev/cuaU0!
(in a popup box)
```

A bit of my enviroment and some command output (commands by root): I am using FreeBSD 9.0 with kernel and world compiled today with the last source updated with csup. The laptop is a Lenovo IBM Thinkpad T61. 4Gbyte of RAM, HD 40% used. Shell bash, X graphical enviroment with Fluxbox, the problem exist even within the shell without load Xorg.


```
* usbconfig -d ugen1.2 show_ifdrv
ugen1.2: <USB 2.0 To COM Device Prolific Technology Inc.> at usbus1,
cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
ugen1.2.0: uplcom0: <Prolific Technology Inc. USB 2.0 To COM Device,
class 0/0, rev 1.10/3.00, addr 2>
```


```
* usbconfig -d ugen1.2 dump_device_desc
ugen1.2: <USB 2.0 To COM Device Prolific Technology Inc.> at usbus1,
cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON

 bLength = 0x0012
 bDescriptorType = 0x0001
 bcdUSB = 0x0110
 bDeviceClass = 0x0000
 bDeviceSubClass = 0x0000
 bDeviceProtocol = 0x0000
 bMaxPacketSize0 = 0x0040
 idVendor = 0x067b
 idProduct = 0x2303
 bcdDevice = 0x0300
 iManufacturer = 0x0001  <Prolific Technology Inc.>
 iProduct = 0x0002  <USB 2.0 To COM Device>
 iSerialNumber = 0x0000  <no string>
 bNumConfigurations = 0x0001
```


```
* dmesg when I connect the cable:
ugen1.2: <Prolific Technology Inc.> at usbus1
uplcom0: <Prolific Technology Inc. USB 2.0 To COM Device, class 0/0,
rev 1.10/3.00, addr 2> on usbus1
```


```
* KLDSTAT
Id Refs Address            Size     Name
 1   36 0xffffffff80200000 d58c20   kernel
 3    1 0xffffffff80f6c000 104ab40  nvidia.ko
 4    4 0xffffffff81fb7000 45218    linux.ko
 5    1 0xffffffff82212000 13300f   zfs.ko
 6    1 0xffffffff82346000 2fb5     opensolaris.ko
 7    1 0xffffffff82349000 3d5d     linprocfs.ko
 8    1 0xffffffff8234d000 24c19    wpifw.ko
10    1 0xffffffff82374000 2a4c1    pf.ko
11    1 0xffffffff8239f000 762      rtc.ko
12    1 0xffffffff82372000 1fd5     uplcom.ko
```


```
* stty -a -f /dev/cuaU0
speed 9600 baud; 0 rows; 0 columns;
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl
      -echoprt -altwerase -noflsh -tostop -flusho -pendin -nokerninfo
      -extproc
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff ixany imaxbel -ignbrk
      brkint -inpck -ignpar -parmrk
oflags: opost onlcr -ocrnl tab0 -onocr -onlret
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow
      -dtrflow -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
      eol2 = <undef>; erase = ^?; erase2 = ^H; intr = ^C; kill = ^U;
      lnext = ^V; min = 1; quit = ^\; reprint = ^R; start = ^Q;
      status = ^T; stop = ^S; susp = ^Z; time = 0; werase = ^W;
```
I tried to change the above parameters with "*stty*" by hand using cuaU0, cuaU0.init and cuaU0.lock before using cu, tip and minicom. I tried different combinations to the parameters of the connections but still the problem persists.

My problem is exactly the same to that reported here: http://lists.freebsd.org/pipermail/freebsd-usb/2011-July/010443.html

If I try to do:
`sysctl hw.usb.ucom.debug=15`

I see in dmesg after "*cu -t -s 19200 -l /dev/cuaU0*":


```
ucom_attach_tty: ttycreate: U0
ucom_attach: tp = 0xfffffe0005e08800, unit = 0, subunits = 1
ucom_open: tp = 0xfffffe0005e08800
ucom_dtr: onoff = 1
ucom_line_state: on=0x01, off=0x00
ucom_rts: onoff = 1
ucom_line_state: on=0x02, off=0x00
ucom_ring: onoff = 0
ucom_line_state: on=0x00, off=0x08
ucom_break: onoff = 0
ucom_line_state: on=0x00, off=0x04
ucom_status_change:
ucom_param: sc = 0xfffffe0005106880
ucom_dtr: onoff = 1
ucom_line_state: on=0x01, off=0x00
ucom_rts: onoff = 1
ucom_line_state: on=0x02, off=0x00
ucom_cfg_open:
ucom_ioctl: cmd = 0x402c7413
ucom_ioctl: cmd = 0x802c7416
ucom_ioctl: cmd = 0x2000740d
ucom_ioctl: cmd = 0x402c7413
ucom_ioctl: cmd = 0x802c7416
ucom_param: sc = 0xfffffe0005106880
ucom_ioctl: cmd = 0x8004667e
ucom_ioctl: cmd = 0x8004667d
ucom_status_change:
ucom_status_change:
ucom_get_data: cnt=0
ucom_outwakeup: sc = 0xfffffe0005106880
ucom_get_data: cnt=1
ucom_outwakeup: sc = 0xfffffe0005106880
ucom_outwakeup: sc = 0xfffffe0005106880
uplcom0: at uhub1, port 1, addr 2 (disconnected)
ucom_detach_tty: sc = 0xfffffe0005106880, tp = 0xfffffe0005e08800
ucom_close: tp=0xfffffe0005e08800
ucom_close: tp=0xfffffe0005e08800 already closed
uplcom0: <Prolific Technology Inc. USB 2.0 To COM Device, class 0/0,
rev 1.10/3.00, addr 2> on usbus1
ucom_attach_tty: ttycreate: U0
ucom_attach: tp = 0xfffffe0007953400, unit = 0, subunits = 1
```

Do you have any idea where to give a look to fix my problem? Do you need other information? I suspect that the device is continuously disconnecting and reconnecting
in the background, but it is just a suspicion. I run out of resources and brain but I still need to solve my problem and connect with my remote Alix board using FreeBSD or NetBSD.

Thank you,
best regards

FabioDive


----------



## fabiodive (Mar 18, 2012)

I add here some other useful details.
I always used the root user to run the commands above and never worked. After, I wanted to try a normal user, I writed some devfs rules to give permissions to a wheel user "seaman". This user is inside the dialer and usb groups. Also this solution never worked.

[CMD="cat /etc/devfs.rules"][/CMD]

```
[usb_devices=10]
add path 'ugen*' mode 0777 user seaman group dialer
add path 'ttyU*' mode 0777 user seaman group dialer
add path 'usb/*' mode 0777 user seaman group dialer
add path 'cuaU*' mode 0777 user seaman group dialer
```

I used 7 just to be sure, I wanted to try everything.. 
normally the user just needs "rw" permissions.


These are the rules activated by rc.conf with:

```
devfs_system_ruleset="usb_devices"
```

Thank You
FabioDive


----------



## fabiodive (Mar 20, 2012)

Hello all!

I put here additional info and behaviors I found:
when I use cu, two processes are spawned at the same time:


```
ps aux

...
seaman     80719   0.0 0.0 10048 1372 4  S+    3:35PM    0:00.00
cu -t -eo -l /dev/cuaU0 -s 19200
seaman     80720   0.0 0.0 10048 1360 4  S+    3:35PM    0:00.00
cu -t -eo -l /dev/cuaU0 -s 19200
```

Is this an error? My idea is: the device /dev/cuaU0 get busy on one of the two processes and the other process can't use the device. On the console where cu lives I see:


```
seaman@bluehouse:~$ cu -t -eo -l /dev/cuaU0 -s 19200
can't open log file /var/log/aculog.
Connected
```

Now I Hit ENTER


```
write: Device not configured
```

Now the communication hold and I can't do nothing anymore, hitting Enter doesn't work. I need to get out with ENTER~. And I get:


```
[EOT]
```

if I reboot the remote system *now* I can't see the bootstrap output anymore, that is strange because when I don't hit any key, after a fresh run of cu, I get the bootstrap output, even the login prompt but I can't type in anything.

*A*bout my environment:


```
cat /etc/devfs.rules

[localrules=10]
add path 'ugen*' mode 0660 group operator
add path 'usb/*' mode 0660 group operator


cat /etc/rc.conf

hostname="bluehouse"
ifconfig_em0="DHCP"
powerd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="NO"
wlans_wpi0="wlan0"
ifconfig_wlan0="WPA DHCP"
background_dhclient="YES"
moused_enable="NO"
moused_nondefault_enable="NO"
hald_enable="NO"
linux_enable="YES"
dbus_enable="YES"
zfs_enable="YES"
ntpd_enable="YES"
#bitlbee_enable="YES"
gateway_enable="YES"
pf_enable="YES"
pf_rules="/etc/pf.conf"
pf_program="/sbin/pfctl"
pflog_enable="NO"
pflog_logfile="/var/log/pflog"
pflog_program="/sbin/pflogd"
fusefs_enable="NO"
devd_enable="YES"
devfs_system_ruleset="localrules"


cat /boot/loader.conf

if_wpi_load="YES"
nvidia_load="YES"
wlan_wep_load="YES"
wlan_ccmp_load="YES"
wlan_tkip_load="YES"
```

*T*he groups of the user seaman are:


```
seaman@bluehouse:~$ groups
seaman wheel kmem operator dialer vboxusers usb
```

I get exactly the same behavior using root.

*T*hank you

FabioDive


----------



## fabiodive (Mar 25, 2012)

Hello all!

*S*omething new, this time I rebooted my system, without loading X, I login to the shell as root and I used the same cu command and I get:

```
uplcom0: at uhub0 port 2 (addr 2) disconnected
```

and after a few seconds:

```
uplcom0: <Prolific Technology Inc. USB 2.0 To COM Device, class 0/0, rev 1.10/3.00, addr 2> on usbus1
```

I think this confirms the device is disconnecting and reconnecting when accessed.

*T*hank you.

FabioDive


----------



## willyvmm (Oct 19, 2012)

Have you solved the problem ?
I have the same problem and i could not get it to work


----------



## paulkudla (Oct 31, 2012)

*Update (Might Help)*

I am experiencing the same issues, prolific driver does go on and off line randomly under 8.3 FreeBSD as well.

I have discovered however that this only happens with the current chipset, i had two old usb prolific adapters that are working fine.

Notes below :

Older style chipset info

```
ugen0.2: <Prolific Technology Inc.> at usbus0
uplcom0: <Prolific Technology Inc. USB-Serial Controller D, class 0/0, rev 1.10/4.00, addr 1> on usbus0
```
which appears to be USB 1.0 complient (not 2.0 or 3.0)


The errors occur with using USB 2.0 devices (newer style)

```
ugen0.4: <Prolific Technology Inc.> at usbus0
uplcom2: <Prolific Technology Inc. USB 2.0 To COM Device, class 0/0, rev 1.10/3.00, addr 3> on usbus0
```
When running under USB 2 or 3 the errors seem to start to occur

this was tested on FreeBSD i386 8.3 using a dell power edge 1950 server 

One more note, when plugging in the device USB2 into a USB 3 port the device is not recognized as well.

Hope this helps.


----------



## SirDice (Oct 31, 2012)

paulkudla said:
			
		

> One more note, when plugging in the device USB2 into a USB 3 port the device is not recognized as well.


USB 2.0 compatibility can be turned off on USB 3.0 ports in the BIOS/UEFI.


----------



## paulkudla (Nov 1, 2012)

unfortunately usb 2.0 can not be turned off in the bios (dell 1950 server does not allow for this?) , and i am currently running a pci-e x 4 card for the usb 3.0 ports

recompiled with xhci

fyi


----------

