Ftdi error

43 views
Skip to first unread message

Samuli Kettunen

unread,
Mar 15, 2022, 4:04:10 PM3/15/22
to weewx-user
Hi

I've been using Davis Envoy + Weewx combo since 2011. About year ago I moved Weewx from bare metal to Proxmox VM. Since that I have got ftdi errors every 1-4 weeks that can be solved only by pulling usb-plug out and putting it back again (for example system reboot does not restore communication - ftdi chip needs to be actually depowered):  

syslog:
Mar 12 13:59:06 keito weewx[266587] ERROR weewx.drivers.vantage: LOOP try #1; error: Expected to read 99 chars; got 0 instead
Mar 12 13:59:10 keito weewx[266587] ERROR weewx.drivers.vantage: LOOP try #2; error: Expected to read 99 chars; got 0 instead
Mar 12 13:59:14 keito weewx[266587] ERROR weewx.drivers.vantage: LOOP try #3; error: Expected to read 99 chars; got 0 instead
Mar 12 13:59:18 keito weewx[266587] ERROR weewx.drivers.vantage: LOOP try #4; error: Expected to read 99 chars; got 0 instead
Mar 12 13:59:18 keito weewx[266587] ERROR weewx.drivers.vantage: LOOP max tries (4) exceeded.
Mar 12 13:59:18 keito weewx[266587] INFO weewx.engine: Main loop exiting. Shutting engine down.
Mar 12 13:59:18 keito weewx[266587] INFO weewx.engine: Shutting down StdReport thread
Mar 12 13:59:18 keito kernel: [1654776.457856] ftdi_sio ttyUSB0: usb_serial_generic_write_bulk_callback - nonzero urb status: -71
Mar 12 13:59:18 keito kernel: [1654776.459321] ftdi_sio ttyUSB0: failed to get modem status: -71
Mar 12 13:59:18 keito kernel: [1654776.460276] ftdi_sio ttyUSB0: error from flowcontrol urb
Mar 12 13:59:18 keito weewx[266587] CRITICAL __main__: Caught WeeWxIOError: Max tries exceeded while getting LOOP data.
Mar 12 13:59:18 keito weewx[266587] CRITICAL __main__:     ****  Waiting 60 seconds then retrying...
Mar 12 14:00:18 keito weewx[266587] INFO __main__: retrying...
Mar 12 14:00:18 keito kernel: [1654836.516473] ftdi_sio ttyUSB0: ftdi_set_termios FAILED to set databits/stopbits/parity
Mar 12 14:00:18 keito kernel: [1654836.517516] ftdi_sio ttyUSB0: ftdi_set_termios urb failed to set baudrate
Mar 12 14:00:18 keito weewx[266587] INFO weewx.engine: Loading station type Vantage (weewx.drivers.vantage)
Mar 12 14:00:18 keito weewx[266587] ERROR weewx.engine: Import of driver failed: [Errno 5] Input/output error (<class 'OSError'>)
Mar 12 14:00:18 keito kernel: [1654836.518524] ftdi_sio ttyUSB0: failed to set flow control: -84
Mar 12 14:00:18 keito kernel: [1654836.520634] ftdi_sio ttyUSB0: failed to set flow control: -84
Mar 12 14:00:18 keito weewx[266587] CRITICAL weewx.engine:     ****  Traceback (most recent call last):
Mar 12 14:00:18 keito weewx[266587] CRITICAL weewx.engine:     ****    File "/usr/share/weewx/weewx/engine.py", line 119, in setupStation
Mar 12 14:00:18 keito weewx[266587] CRITICAL weewx.engine:     ****      self.console = loader_function(config_dict, self)
Mar 12 14:00:18 keito weewx[266587] CRITICAL weewx.engine:     ****    File "/usr/share/weewx/weewx/drivers/vantage.py", line 40, in loader
Mar 12 14:00:18 keito weewx[266587] CRITICAL weewx.engine:     ****      return VantageService(engine, config_dict)
Mar 12 14:00:18 keito weewx[266587] CRITICAL weewx.engine:     ****    File "/usr/share/weewx/weewx/drivers/vantage.py", line 1916, in __init__
Mar 12 14:00:18 keito weewx[266587] CRITICAL weewx.engine:     ****      Vantage.__init__(self, **config_dict[DRIVER_NAME])
Mar 12 14:00:18 keito weewx[266587] CRITICAL weewx.engine:     ****    File "/usr/share/weewx/weewx/drivers/vantage.py", line 514, in __init__
Mar 12 14:00:18 keito weewx[266587] CRITICAL weewx.engine:     ****      self.port.openPort()
Mar 12 14:00:18 keito weewx[266587] CRITICAL weewx.engine:     ****    File "/usr/share/weewx/weewx/drivers/vantage.py", line 309, in openPort
Mar 12 14:00:18 keito weewx[266587] CRITICAL weewx.engine:     ****      self.serial_port = serial.Serial(self.port, self.baudrate, timeout=self.timeout)
Mar 12 14:00:18 keito weewx[266587] CRITICAL weewx.engine:     ****    File "/usr/lib/python3/dist-packages/serial/serialutil.py", line 244, in __init__
Mar 12 14:00:18 keito weewx[266587] CRITICAL weewx.engine:     ****      self.open()
Mar 12 14:00:18 keito weewx[266587] CRITICAL weewx.engine:     ****    File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 343, in open
Mar 12 14:00:18 keito weewx[266587] CRITICAL weewx.engine:     ****      self._update_dtr_state()
Mar 12 14:00:18 keito weewx[266587] CRITICAL weewx.engine:     ****    File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 691, in _update_dtr_state
Mar 12 14:00:18 keito weewx[266587] CRITICAL weewx.engine:     ****      fcntl.ioctl(self.fd, TIOCMBIS, TIOCM_DTR_str)
Mar 12 14:00:18 keito weewx[266587] CRITICAL weewx.engine:     ****  OSError: [Errno 5] Input/output error
Mar 12 14:00:18 keito weewx[266587] CRITICAL __main__: Unable to load driver: [Errno 5] Input/output error
Mar 12 14:00:18 keito weewx[266587] CRITICAL __main__:     ****  Exiting...
Mar 12 14:00:18 keito kernel: [1654836.528654] ftdi_sio ttyUSB0: failed to get modem status: -71
Mar 12 14:00:18 keito kernel: [1654836.529720] ftdi_sio ttyUSB0: error from flowcontrol urb

$ sudo dmesg
[1125845.535688] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
[1125845.535696] ftdi_sio 3-1:1.0: device disconnected
[1125848.031559] usb 3-1: new full-speed USB device number 4 using uhci_hcd
[1125848.223499] usb 3-1: New USB device found, idVendor=0403, idProduct=6015, bcdDevice=10.00
[1125848.223504] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[1125848.223505] usb 3-1: Product: FT231X USB UART
[1125848.223506] usb 3-1: Manufacturer: FTDI
[1125848.223507] usb 3-1: SerialNumber: DN031FK6
[1125848.231534] ftdi_sio 3-1:1.0: FTDI USB Serial Device converter detected
[1125848.231557] usb 3-1: Detected FT-X
[1125848.240892] usb 3-1: FTDI USB Serial Device converter now attached to ttyUSB0
[1654776.457856] ftdi_sio ttyUSB0: usb_serial_generic_write_bulk_callback - nonzero urb status: -71
[1654776.459321] ftdi_sio ttyUSB0: failed to get modem status: -71
[1654776.460276] ftdi_sio ttyUSB0: error from flowcontrol urb
[1654836.516473] ftdi_sio ttyUSB0: ftdi_set_termios FAILED to set databits/stopbits/parity
[1654836.517516] ftdi_sio ttyUSB0: ftdi_set_termios urb failed to set baudrate
[1654836.518524] ftdi_sio ttyUSB0: failed to set flow control: -84
[1654836.520634] ftdi_sio ttyUSB0: failed to set flow control: -84
[1654836.528654] ftdi_sio ttyUSB0: failed to get modem status: -71
[1654836.529720] ftdi_sio ttyUSB0: error from flowcontrol urb

Proxmox gives quite limited usb passthrough options, only usb3 forcing, but problem remains regardless this.

Debian VM (bookworm/sid) is currently running kernel version 5.16.7 and Proxmox 5.13.19.

Any ideas how to solve this problem? Is there command that would reset ftdi chip communication without physical interaction? I have old RS232 interface somewhere, mayby some other USB UART would work better? Slowing down communication (currently as default 19200)? I had zero problems with this adapter on bare metal, but with new server hardware (Supermicro motherboard) I have used only VM.

Weewx version 4.7.0 (deb-package) and wee_device highlights:

$ sudo wee_device --info
Using configuration file /etc/weewx/weewx.conf
Using Vantage driver version 3.2.3 (weewx.drivers.vantage)
Querying...
Davis Vantage EEPROM settings:

    CONSOLE TYPE:                   Vantage Pro2

    CONSOLE FIRMWARE:
      Date:                         Sep 12 2017
      Version:                      3.80

Thanks for all ideas, Samuli

Greg Troxel

unread,
Mar 15, 2022, 4:33:09 PM3/15/22
to Samuli Kettunen, weewx-user

Samuli Kettunen <metsa...@gmail.com> writes:

> I've been using Davis Envoy + Weewx combo since 2011. About year ago I
> moved Weewx from bare metal to Proxmox VM. Since that I have got ftdi
> errors every 1-4 weeks that can be solved only by pulling usb-plug out and
> putting it back again (for example system reboot does not restore
> communication - ftdi chip needs to be actually depowered):

I have not done what you are doing, but my guess is that your problems
are that you are running a USB device drive in a VM, either PCI
passthrough to the controller, or to an emulated controller which is
then talking to hardware. You should understand what's really
happening and it is likely pretty complicated.

I don't know if weewx has easy support for this, but if you can run a
process in the dom0 (host kernel on the hardware) and then connect weewx
to that over TCP from inside the VM, you will have removed all the USB
driver issues from the VM.
signature.asc
Reply all
Reply to author
Forward
0 new messages