ModalAI Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    voxl Tmotor f55 esc

    ESCs
    5
    26
    1669
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Alex KushleyevA
      Alex Kushleyev ModalAI Team
      last edited by

      Do the ESCs make motor sounds when powered on? Should be similar sound as our standard ESCs. If so, then there is ESC firmware loaded.

      Can you please share which FTDI adapter you are using?

      I can add a debug mode to voxl-esc tools to print out what it is sending and receiving, this may help. I will follow up tomorrow.

      There is also C++ code example you can use for basic testing, i will share that shortly.

      Alex

      E 1 Reply Last reply Reply Quote 0
      • E
        ErezI @Alex Kushleyev
        last edited by

        @Alex-Kushleyev

        Alex,

        We use FTDI C232HD-DDHSP-0 & TTL-232RG-vsw3v3-we

        Thanks

        1 Reply Last reply Reply Quote 0
        • Alex KushleyevA
          Alex Kushleyev ModalAI Team
          last edited by

          Hello @ErezI ,

          I have added a debug functionality to a new feature branch which i have been working on. https://gitlab.com/voxl-public/voxl-sdk/utilities/voxl-esc/-/tree/add-new-params . This branch has some changes to support upcoming ESC param updates, but it is also functional to test the ESCs (except reading and writing params - don't try it 🙂 ). We can use it to help debug your issue.

          You can checkout the code from the add-new-params branch and try the following test with your Tmotor ESC. You will see that the ESCs are queried twice, but that is ok, it is part of the procedure (kind of redundant, but it's fine 🙂 ).

          Each data packet (outgoing and incoming starts with a header 0xAF) and ends with a two-byte checksum.

          In my case i am using a STLInk-V3 dongle as a serial to USB adapter.

          ./voxl-esc-scan.py --enable-debug 1
          Detected Python version : 3.10.6 (main, Mar 10 2023, 10:55:28) [GCC 11.3.0]
          Found voxl-esc tools bin version: 1.2
          INFO: All COM ports:
          	/dev/ttyACM0 : STLINK-V3 - ST-Link VCP Ctrl
          INFO: UART Port Candidates:
          	/dev/ttyACM0
          Found previous connection information in .voxl_esc_cache ..
          Prioritizing /dev/ttyACM0 @ 2000000
          INFO: Scanning for ESC firmware: /dev/ttyACM0, baud: 2000000
          	UART TX:  AF 06 00 00 91 C1
          	UART TX:  AF 06 18 00 9B C1
          	UART RX:  AF 0E 6D 00 25 00 21 00 00 00 00 00 64 DE AF 30 83 00 25 00 21 00 5D 00 46 00 17 50 32 53 34 35 34 20 62 61 36 64 31 39 33 61 2A 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 1B C5
          	PACKET CRC OK:  AF 0E 6D 00 25 00 21 00 00 00 00 00 64 DE
          	PACKET CRC OK:  AF 30 83 00 25 00 21 00 5D 00 46 00 17 50 32 53 34 35 34 20 62 61 36 64 31 39 33 61 2A 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 1B C5
          	Got Short Version Response from ID 0
          	Got Extended Version Response from ID 0
          	UART TX:  AF 06 00 01 50 01
          	UART TX:  AF 06 18 01 5A 01
          	UART RX:  AF 0E 6D 01 25 00 21 00 00 00 00 00
          	UART RX:  69 4E AF 30 83 01 25 00 21 00 5D 00 38 00 17 50 32 53 34 35 34 20 64 38 32 35 63 37 38 63 00 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 14 2B
          	PACKET CRC OK:  AF 0E 6D 01 25 00 21 00 00 00 00 00 69 4E
          	PACKET CRC OK:  AF 30 83 01 25 00 21 00 5D 00 38 00 17 50 32 53 34 35 34 20 64 38 32 35 63 37 38 63 00 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 14 2B
          	Got Short Version Response from ID 1
          	Got Extended Version Response from ID 1
          	UART TX:  AF 06 00 02 10 00
          	UART TX:  AF 06 18 02 1A 00
          	UART RX:  AF 0E 6D 02 25 00 21 00 00 00 00 00 7D BE AF 30 83 02 25 00 21 00 5E 00 3E 00 17 50 32 53 34 35 34 20 64 38 32 35 63 37 38 63 00 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 62 BF
          	PACKET CRC OK:  AF 0E 6D 02 25 00 21 00 00 00 00 00 7D BE
          	PACKET CRC OK:  AF 30 83 02 25 00 21 00 5E 00 3E 00 17 50 32 53 34 35 34 20 64 38 32 35 63 37 38 63 00 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 62 BF
          	Got Short Version Response from ID 2
          	Got Extended Version Response from ID 2
          	UART TX:  AF 06 00 03 D1 C0
          	UART TX:  AF 06 18 03 DB C0
          	UART RX:  AF 0E 6D 03 25 00 21 00 00 00 00 00 70 2E AF 30 83 03 25 00 21 00 55 00 40 00 17 50 32 53 34 35 34 20 64 38 32 35 63 37 38 63 00 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 1D DE
          	PACKET CRC OK:  AF 0E 6D 03 25 00 21 00 00 00 00 00 70 2E
          	PACKET CRC OK:  AF 30 83 03 25 00 21 00 55 00 40 00 17 50 32 53 34 35 34 20 64 38 32 35 63 37 38 63 00 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 1D DE
          	Got Short Version Response from ID 3
          	Got Extended Version Response from ID 3
          INFO: ESC(s) detected on port: /dev/ttyACM0, baud rate: 2000000
          INFO: Detected protocol: firmware
          	UART TX:  AF 06 00 00 91 C1
          	UART TX:  AF 06 18 00 9B C1
          	UART RX:  AF 0E 6D 00 25 00 21 00 00 00 00 00 64 DE AF 30 83 00 25 00 21 00 5D 00 46 00 17 50 32 53 34 35 34 20 62 61 36 64 31 39 33 61 2A 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 1B C5
          	PACKET CRC OK:  AF 0E 6D 00 25 00 21 00 00 00 00 00 64 DE
          	PACKET CRC OK:  AF 30 83 00 25 00 21 00 5D 00 46 00 17 50 32 53 34 35 34 20 62 61 36 64 31 39 33 61 2A 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 1B C5
          	Got Short Version Response from ID 0
          	Got Extended Version Response from ID 0
          	UART TX:  AF 06 00 01 50 01
          	UART TX:  AF 06 18 01 5A 01
          	UART RX:  AF 0E 6D 01 25 00 21 00 00 00 00 00 69 4E AF 30 83 01 25 00 21 00 5D 00 38 00 17 50 32 53 34 35 34 20 64 38 32 35 63 37 38 63 00 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 14 2B
          	PACKET CRC OK:  AF 0E 6D 01 25 00 21 00 00 00 00 00 69 4E
          	PACKET CRC OK:  AF 30 83 01 25 00 21 00 5D 00 38 00 17 50 32 53 34 35 34 20 64 38 32 35 63 37 38 63 00 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 14 2B
          	Got Short Version Response from ID 1
          	Got Extended Version Response from ID 1
          	UART TX:  AF 06 00 02 10 00
          	UART TX:  AF 06 18 02 1A 00
          	UART RX:  AF 0E 6D 02 25 00 21 00 00 00 00 00 7D BE AF 30 83 02 25 00 21 00 5E 00 3E 00 17 50 32 53 34 35 34 20 64 38 32 35 63 37 38 63 00 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 62 BF
          	PACKET CRC OK:  AF 0E 6D 02 25 00 21 00 00 00 00 00 7D BE
          	PACKET CRC OK:  AF 30 83 02 25 00 21 00 5E 00 3E 00 17 50 32 53 34 35 34 20 64 38 32 35 63 37 38 63 00 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 62 BF
          	Got Short Version Response from ID 2
          	Got Extended Version Response from ID 2
          	UART TX:  AF 06 00 03 D1 C0
          	UART TX:  AF 06 18 03 DB C0
          	UART RX:  AF 0E 6D 03 25 00 21 00 00 00 00 00 70 2E AF 30 83 03 25 00 21 00 55 00 40 00 17 50 32 53 34 35 34 20 64 38 32 35 63 37 38 63 00 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 1D DE
          	PACKET CRC OK:  AF 0E 6D 03 25 00 21 00 00 00 00 00 70 2E
          	PACKET CRC OK:  AF 30 83 03 25 00 21 00 55 00 40 00 17 50 32 53 34 35 34 20 64 38 32 35 63 37 38 63 00 00 00 00 37 61 30 31 61 37 38 30 00 00 00 00 00 00 1D DE
          	Got Short Version Response from ID 3
          	Got Extended Version Response from ID 3
          INFO: Additional Information:
          INFO: ---------------------
          	ID         : 0
          	Board      : version 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
          	UID        : 0x20343534533250170046005D
          	Firmware   : version   37, hash ba6d193a*
          	Bootloader : version    0, hash 7a01a780
          
          	ID         : 1
          	Board      : version 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
          	UID        : 0x20343534533250170038005D
          	Firmware   : version   37, hash d825c78c
          	Bootloader : version    0, hash 7a01a780
          
          	ID         : 2
          	Board      : version 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
          	UID        : 0x2034353453325017003E005E
          	Firmware   : version   37, hash d825c78c
          	Bootloader : version    0, hash 7a01a780
          
          	ID         : 3
          	Board      : version 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
          	UID        : 0x203435345332501700400055
          	Firmware   : version   37, hash d825c78c
          	Bootloader : version    0, hash 7a01a780
          
          ---------------------
          

          Additionally, there is an open source implementation of the basic communication protocol here : https://gitlab.com/voxl-public/support/esc-driver . I am able to use it to query the Tmotor ESC:

          git clone git@gitlab.com:voxl-public/support/esc-driver.git
          cd esc-driver/examples
          make
          ./qc_esc_test 0 /dev/ttyACM0 2000000 #this will send zero power command to 4 ESCs and query feedback
          qc_esc_test version 1.0 build date May 31 2023
          Usage: qc_esc_test <test_mode> <device path> <baud_rate>
          Available test modes:
          	 0: detect esc response
          	 1: detect esc versions
          	 2: open-loop test
          	 3: closed-loop RPM test
          Trying device /dev/ttyACM0, baud rate 2000000
          Starting Test #0
          Detecting ESC response (sending zero RPM commands and requesting feedback)..
          ESC response: id  1, state  0, cntr  90, pwr +000,     0RPM, 12.135V, 0.000A, 27.840C 
          ESC response: id  2, state  0, cntr 154, pwr +000,     0RPM, 12.158V, 0.000A, 27.970C 
          ...
          got esc feedback (out of 15 packets each): 15 15 15 15 0 0 0 0
          Found 4 ESCs
          

          Another thing i can think of.. Maybe FTDI chip latency is too high, you can try to reduce it to 1ms with the following command (for appropriate device, such as ttyUSB0:

          echo 1 > /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
          

          Please try these out and let me know your results!

          Alex

          1 Reply Last reply Reply Quote 0
          • Alex KushleyevA
            Alex Kushleyev ModalAI Team @mzahana
            last edited by

            @mzahana , we have a limited availability of Tmotor ESC with ModalAI firmware. It is officially not supported. We are working on our own version of a 6S Racing ESC, but it is not yet ready for release. If you can describe your application, perhaps one of our existing official ESCs could work for you.

            E 1 Reply Last reply Reply Quote 0
            • E
              ErezI @Alex Kushleyev
              last edited by

              @Alex-Kushleyev
              Alex

              Thanks for your fast & helpful support..
              The motors sound like 3-4 successive rings when powered on.

              Erez

              Alex KushleyevA 1 Reply Last reply Reply Quote 0
              • Alex KushleyevA
                Alex Kushleyev ModalAI Team @ErezI
                last edited by

                @ErezI , OK that means the firmware is loaded. All of our ESCs come programmed and tested before shipping.

                Alex

                1 Reply Last reply Reply Quote 0
                • Alex KushleyevA
                  Alex Kushleyev ModalAI Team
                  last edited by

                  Hello @ErezI , did the debugging mode help you figure out the issue?

                  E Yariv LandY 3 Replies Last reply Reply Quote 0
                  • E
                    ErezI @Alex Kushleyev
                    last edited by

                    @Alex-Kushleyev

                    Hi Alex,

                    No change.

                    I can't reduce the latency:
                    user@ubuntu18-VBox:/mnt/ushare/voxl-esc-add-new-params/voxl-esc-tools$ sudo echo 1 > /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
                    bash: /sys/bus/usb-serial/devices/ttyUSB0/latency_timer: Permission denied
                    user@ubuntu18-VBox:/mnt/ushare/voxl-esc-add-new-params/voxl-esc-tools$ echo 1 > /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
                    bash: /sys/bus/usb-serial/devices/ttyUSB0/latency_timer: Permission denied

                    and no ESCs identified:
                    user@ubuntu18-VBox:/mnt/ushare/voxl-esc-add-new-params/voxl-esc-tools$ ./voxl-esc-scan.py --enable-debug 1
                    Detected Python version : 3.8.16 (default, Dec 7 2022, 01:12:13)
                    [GCC 7.5.0]
                    Found voxl-esc tools bin version: 1.2
                    INFO: All COM ports:
                    /dev/ttyUSB0 : C232HD-DDHSP-0 - C232HD-DDHSP-0
                    INFO: UART Port Candidates:
                    ERROR: No ESC(s) detected, exiting.

                    1 Reply Last reply Reply Quote 0
                    • Yariv LandY
                      Yariv Land @Alex Kushleyev
                      last edited by

                      @Alex-Kushleyev

                      Hi Alex,

                      I am working with Erez ad Ben on this project and it seems that we are hitting a wall which I assume that you are the only one who can help.
                      I would appreciate if we will be able to contact you directly in regards to the issue in hand, I don't know if this is a setup issue, wiring issue, FTDI issue or etc - but I do hope that in a quick conference chat we will be able to overcome this.

                      I would appreciate if you will be able to contact me through my E-mail Yariv.l@pearls.org.il to schedule a quick chat to resolve this whole issue.

                      Appreciate your help and support,

                      Yariv

                      1 Reply Last reply Reply Quote 0
                      • E
                        ErezI @Alex Kushleyev
                        last edited by

                        @Alex-Kushleyev

                        Hi Alex,

                        I added my tests' info using wsl2 (no success)

                        on windows

                        #process0
                        C:\Program Files\usbipd-win>usbipd server

                        on wsl (f55a-cyclic.sh)

                        #!/bin/bash
                        sudo echo 1 > /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
                        sleep 5

                        #proces1
                        sudo nome-terminal -x ./auto-attach.sh 172.24.192.1 3-2
                        sleep 3

                        #process2
                        sudo gnome-terminal -x watch "ls -al /dev | egrep ttyU"
                        sleep 3

                        #process3
                        sudo gnome-terminal -x dmesg -W
                        sleep 3

                        #process4
                        sudo gnome-terminal --working-directory=/data/voxl-esc-add-new-params/voxl-esc-tools/ -x watch "python /data/voxl-esc-add-new-params/voxl-esc-tools/voxl-esc-scan.py --enable-debug 1"

                        sleep 30
                        ps -a
                        sleep 3
                        sudo pkill -9 gnome-terminal
                        pkill -9 gnome-terminal
                        sleep 5

                        #process0 output

                        C:\Program Files\usbipd-win>usbipd server
                        info: Microsoft.Hosting.Lifetime[0]
                        Application started. Press Ctrl+C to shut down.
                        info: Microsoft.Hosting.Lifetime[0]
                        Hosting environment: Production
                        info: Microsoft.Hosting.Lifetime[0]
                        Content root path: C:\Program Files\usbipd-win
                        info: Usbipd.ConnectedClient[1]
                        Client 172.24.199.17 claimed device at 3-2 (USB\VID_0403&PID_6001\FT4TW3LE).
                        info: Usbipd.ConnectedClient[2]
                        Client 172.24.199.17 released device at 3-2 (USB\VID_0403&PID_6001\FT4TW3LE).
                        info: Usbipd.ConnectedClient[1]
                        Client 172.24.199.17 claimed device at 3-2 (USB\VID_0403&PID_6001\FT4TW3LE).
                        info: Usbipd.ConnectedClient[2]
                        Client 172.24.199.17 released device at 3-2 (USB\VID_0403&PID_6001\FT4TW3LE).
                        info: Usbipd.ConnectedClient[1]
                        Client 172.24.199.17 claimed device at 3-2 (USB\VID_0403&PID_6001\FT4TW3LE).

                        #process1 output

                        usbip: error: Attach Request for 3-2 failed - Device not found
                        Attached
                        Detached
                        usbip: error: Attach Request for 3-2 failed - Device not found
                        Attached
                        Detached
                        Attached

                        #process2 output

                        Every 2.0s: ls -al /dev | egrep ttyU PW-CONTROL07: Wed Jun 21 17:06:16 2023

                        crw------- 1 root root 188, 0 Jun 21 2023 ttyUSB0

                        #process3 output

                        [ 1892.623021] vhci_hcd vhci_hcd.0: pdev(0) rhport(0) sockfd(3)
                        [ 1892.628241] vhci_hcd vhci_hcd.0: devid(196610) speed(2) speed_str(full-speed)
                        [ 1892.630748] vhci_hcd vhci_hcd.0: Device attached
                        [ 1892.914403] vhci_hcd: vhci_device speed not set
                        [ 1892.984269] usb 1-1: new full-speed USB device number 18 using vhci_hcd
                        [ 1893.084280] vhci_hcd: vhci_device speed not set
                        [ 1893.164250] usb 1-1: SetAddress Request (18) to port 0
                        [ 1893.604492] usb 1-1: New USB device found, idVendor=0403, idProduct=6001, bcdDevice= 6.00
                        [ 1893.606748] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
                        [ 1893.609072] usb 1-1: Product: TTL232RG-VREG3V3
                        [ 1893.609980] usb 1-1: Manufacturer: FTDI
                        [ 1893.610659] usb 1-1: SerialNumber: FT4TW3LE
                        [ 1893.623736] ftdi_sio 1-1:1.0: FTDI USB Serial Device converter detected
                        [ 1893.625770] usb 1-1: Detected FT232RL
                        [ 1893.632497] usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0
                        [ 1895.017816] vhci_hcd: unlink->seqnum 81017
                        [ 1895.018495] vhci_hcd: the urb (seqnum 81017) was already given back
                        [ 1895.019313] vhci_hcd: unlink->seqnum 81019
                        [ 1895.019856] vhci_hcd: the urb (seqnum 81019) was already given back
                        [ 1895.163809] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1895.164874] vhci_hcd: unlink->seqnum 81055
                        [ 1895.165354] vhci_hcd: the urb (seqnum 81055) was already given back
                        [ 1895.310820] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1895.311921] vhci_hcd: unlink->seqnum 81089
                        [ 1895.312494] vhci_hcd: the urb (seqnum 81089) was already given back
                        [ 1895.461562] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1895.464395] vhci_hcd: unlink->seqnum 81123
                        [ 1895.466541] vhci_hcd: the urb (seqnum 81123) was already given back
                        [ 1895.628411] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1895.630861] vhci_hcd: unlink->seqnum 81158
                        [ 1895.632078] vhci_hcd: the urb (seqnum 81158) was already given back
                        [ 1895.784242] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1895.785161] vhci_hcd: unlink->seqnum 81193
                        [ 1895.785654] vhci_hcd: the urb (seqnum 81193) was already given back
                        [ 1896.349788] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1896.350886] vhci_hcd: unlink->seqnum 81521
                        [ 1896.351526] vhci_hcd: the urb (seqnum 81521) was already given back
                        [ 1896.914474] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1896.915333] vhci_hcd: unlink->seqnum 82125
                        [ 1896.915797] vhci_hcd: the urb (seqnum 82125) was already given back
                        [ 1899.267100] vhci_hcd: unlink->seqnum 82295
                        [ 1899.267747] vhci_hcd: the urb (seqnum 82295) was already given back
                        [ 1899.268576] vhci_hcd: unlink->seqnum 82297
                        [ 1899.269365] vhci_hcd: the urb (seqnum 82297) was already given back
                        [ 1899.416402] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1899.417294] vhci_hcd: unlink->seqnum 82468
                        [ 1899.417874] vhci_hcd: the urb (seqnum 82468) was already given back
                        [ 1899.561474] vhci_hcd: unlink->seqnum 82634
                        [ 1899.562043] vhci_hcd: the urb (seqnum 82634) was already given back
                        [ 1899.562994] vhci_hcd: unlink->seqnum 82636
                        [ 1899.563598] vhci_hcd: the urb (seqnum 82636) was already given back
                        [ 1899.708527] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1899.710263] vhci_hcd: unlink->seqnum 82802
                        [ 1899.711258] vhci_hcd: the urb (seqnum 82802) was already given back
                        [ 1899.859324] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1899.860214] vhci_hcd: unlink->seqnum 82958
                        [ 1899.860859] vhci_hcd: the urb (seqnum 82958) was already given back
                        [ 1900.003321] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1900.004322] vhci_hcd: unlink->seqnum 83123
                        [ 1900.004759] vhci_hcd: the urb (seqnum 83123) was already given back
                        [ 1900.567465] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1900.568335] vhci_hcd: unlink->seqnum 83730
                        [ 1900.568811] vhci_hcd: the urb (seqnum 83730) was already given back
                        [ 1901.130609] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1901.131840] vhci_hcd: unlink->seqnum 84335
                        [ 1901.132850] vhci_hcd: the urb (seqnum 84335) was already given back
                        [ 1903.459054] vhci_hcd: unlink->seqnum 84493
                        [ 1903.460300] vhci_hcd: the urb (seqnum 84493) was already given back
                        [ 1903.461365] vhci_hcd: unlink->seqnum 84495
                        [ 1903.462478] vhci_hcd: the urb (seqnum 84495) was already given back
                        [ 1903.611008] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1903.611918] vhci_hcd: unlink->seqnum 84668
                        [ 1903.612309] vhci_hcd: the urb (seqnum 84668) was already given back
                        [ 1903.757928] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1903.758831] vhci_hcd: unlink->seqnum 84837
                        [ 1903.759266] vhci_hcd: the urb (seqnum 84837) was already given back
                        [ 1903.904994] vhci_hcd: unlink->seqnum 85001
                        [ 1903.905570] vhci_hcd: the urb (seqnum 85001) was already given back
                        [ 1903.906408] vhci_hcd: unlink->seqnum 85003
                        [ 1903.906866] vhci_hcd: the urb (seqnum 85003) was already given back
                        [ 1904.055495] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1904.056528] vhci_hcd: unlink->seqnum 85174
                        [ 1904.057186] vhci_hcd: the urb (seqnum 85174) was already given back
                        [ 1904.199584] vhci_hcd: unlink->seqnum 85340
                        [ 1904.200320] vhci_hcd: the urb (seqnum 85340) was already given back
                        [ 1904.201153] vhci_hcd: unlink->seqnum 85342
                        [ 1904.201755] vhci_hcd: the urb (seqnum 85342) was already given back
                        [ 1904.770065] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1904.771215] vhci_hcd: unlink->seqnum 85941
                        [ 1904.793412] vhci_hcd: the urb (seqnum 85941) was already given back
                        [ 1905.378980] vhci_hcd: unlink->seqnum 86540
                        [ 1905.379524] vhci_hcd: the urb (seqnum 86540) was already given back
                        [ 1905.380213] vhci_hcd: unlink->seqnum 86542
                        [ 1905.380672] vhci_hcd: the urb (seqnum 86542) was already given back
                        [ 1907.712779] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1907.713839] vhci_hcd: unlink->seqnum 86708
                        [ 1907.714369] vhci_hcd: the urb (seqnum 86708) was already given back
                        [ 1907.856827] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1907.857885] vhci_hcd: unlink->seqnum 86873
                        [ 1907.858613] vhci_hcd: the urb (seqnum 86873) was already given back
                        [ 1908.000380] vhci_hcd: unlink->seqnum 87037
                        [ 1908.000990] vhci_hcd: the urb (seqnum 87037) was already given back
                        [ 1908.001894] vhci_hcd: unlink->seqnum 87039
                        [ 1908.002283] vhci_hcd: the urb (seqnum 87039) was already given back
                        [ 1908.144051] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1908.145049] vhci_hcd: unlink->seqnum 87203
                        [ 1908.145540] vhci_hcd: the urb (seqnum 87203) was already given back
                        [ 1908.287037] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1908.287877] vhci_hcd: unlink->seqnum 87365
                        [ 1908.288349] vhci_hcd: the urb (seqnum 87365) was already given back
                        [ 1908.429762] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1908.430658] vhci_hcd: unlink->seqnum 87530
                        [ 1908.431205] vhci_hcd: the urb (seqnum 87530) was already given back
                        [ 1908.985317] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1908.986189] vhci_hcd: unlink->seqnum 88127
                        [ 1908.986661] vhci_hcd: the urb (seqnum 88127) was already given back
                        [ 1909.548749] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1909.549567] vhci_hcd: unlink->seqnum 88733
                        [ 1909.550019] vhci_hcd: the urb (seqnum 88733) was already given back
                        [ 1911.260690] vhci_hcd: connection closed
                        [ 1911.261065] vhci_hcd: stop threads
                        [ 1911.269459] vhci_hcd: release socket
                        [ 1911.270215] vhci_hcd: disconnect device
                        [ 1911.270792] usb 1-1: USB disconnect, device number 18
                        [ 1911.271620] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
                        [ 1911.272759] ftdi_sio 1-1:1.0: device disconnected
                        [ 1919.686333] vhci_hcd vhci_hcd.0: pdev(0) rhport(0) sockfd(3)
                        [ 1919.694426] vhci_hcd vhci_hcd.0: devid(196610) speed(2) speed_str(full-speed)
                        [ 1919.695445] vhci_hcd vhci_hcd.0: Device attached
                        [ 1919.974230] vhci_hcd: vhci_device speed not set
                        [ 1920.054310] usb 1-1: new full-speed USB device number 19 using vhci_hcd
                        [ 1920.134299] vhci_hcd: vhci_device speed not set
                        [ 1920.204355] usb 1-1: SetAddress Request (19) to port 0
                        [ 1920.271386] usb 1-1: New USB device found, idVendor=0403, idProduct=6001, bcdDevice= 6.00
                        [ 1920.272654] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
                        [ 1920.276426] usb 1-1: Product: TTL232RG-VREG3V3
                        [ 1920.283974] usb 1-1: Manufacturer: FTDI
                        [ 1920.284659] usb 1-1: SerialNumber: FT4TW3LE
                        [ 1920.290771] ftdi_sio 1-1:1.0: FTDI USB Serial Device converter detected
                        [ 1920.294102] usb 1-1: Detected FT232RL
                        [ 1920.302218] usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0
                        [ 1921.677956] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1921.678813] vhci_hcd: unlink->seqnum 88782
                        [ 1921.679423] vhci_hcd: the urb (seqnum 88782) was already given back
                        [ 1921.876417] vhci_hcd: unlink->seqnum 88820
                        [ 1921.879762] vhci_hcd: the urb (seqnum 88820) was already given back
                        [ 1921.881034] vhci_hcd: unlink->seqnum 88822
                        [ 1921.882547] vhci_hcd: the urb (seqnum 88822) was already given back
                        [ 1922.043477] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1922.044895] vhci_hcd: unlink->seqnum 88857
                        [ 1922.047776] vhci_hcd: the urb (seqnum 88857) was already given back
                        [ 1922.198003] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1922.199267] vhci_hcd: unlink->seqnum 88892
                        [ 1922.201613] vhci_hcd: the urb (seqnum 88892) was already given back
                        [ 1922.347202] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1922.348165] vhci_hcd: unlink->seqnum 88926
                        [ 1922.348714] vhci_hcd: the urb (seqnum 88926) was already given back
                        [ 1922.499077] vhci_hcd: unlink->seqnum 88960
                        [ 1922.501091] vhci_hcd: the urb (seqnum 88960) was already given back
                        [ 1922.502717] vhci_hcd: unlink->seqnum 88962
                        [ 1922.503551] vhci_hcd: the urb (seqnum 88962) was already given back
                        [ 1923.072953] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1923.073985] vhci_hcd: unlink->seqnum 89043
                        [ 1923.074516] vhci_hcd: the urb (seqnum 89043) was already given back
                        [ 1923.635175] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1923.636452] vhci_hcd: unlink->seqnum 89124
                        [ 1923.639462] vhci_hcd: the urb (seqnum 89124) was already given back
                        [ 1925.988300] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1925.989173] vhci_hcd: unlink->seqnum 89294
                        [ 1925.989803] vhci_hcd: the urb (seqnum 89294) was already given back
                        [ 1926.134048] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1926.135052] vhci_hcd: unlink->seqnum 89463
                        [ 1926.135819] vhci_hcd: the urb (seqnum 89463) was already given back
                        [ 1926.278682] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1926.279729] vhci_hcd: unlink->seqnum 89630
                        [ 1926.280229] vhci_hcd: the urb (seqnum 89630) was already given back
                        [ 1926.421818] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1926.422654] vhci_hcd: unlink->seqnum 89795
                        [ 1926.423078] vhci_hcd: the urb (seqnum 89795) was already given back
                        [ 1926.564779] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1926.565697] vhci_hcd: unlink->seqnum 89960
                        [ 1926.566098] vhci_hcd: the urb (seqnum 89960) was already given back
                        [ 1926.708525] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1926.709465] vhci_hcd: unlink->seqnum 90126
                        [ 1926.709876] vhci_hcd: the urb (seqnum 90126) was already given back
                        [ 1927.274337] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1927.275263] vhci_hcd: unlink->seqnum 90734
                        [ 1927.275660] vhci_hcd: the urb (seqnum 90734) was already given back
                        [ 1927.845187] vhci_hcd: unlink->seqnum 91344
                        [ 1927.850883] vhci_hcd: the urb (seqnum 91344) was already given back
                        [ 1927.851973] vhci_hcd: unlink->seqnum 91345
                        [ 1927.852996] vhci_hcd: the urb (seqnum 91345) was already given back
                        [ 1930.171018] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1930.171928] vhci_hcd: unlink->seqnum 91510
                        [ 1930.172363] vhci_hcd: the urb (seqnum 91510) was already given back
                        [ 1930.314139] vhci_hcd: unlink->seqnum 91677
                        [ 1930.314704] vhci_hcd: the urb (seqnum 91677) was already given back
                        [ 1930.315339] vhci_hcd: unlink->seqnum 91678
                        [ 1930.315820] vhci_hcd: the urb (seqnum 91678) was already given back
                        [ 1930.459077] vhci_hcd: unlink->seqnum 91844
                        [ 1930.459613] vhci_hcd: the urb (seqnum 91844) was already given back
                        [ 1930.460384] vhci_hcd: unlink->seqnum 91846
                        [ 1930.460758] vhci_hcd: the urb (seqnum 91846) was already given back
                        [ 1930.604012] vhci_hcd: unlink->seqnum 92012
                        [ 1930.604595] vhci_hcd: the urb (seqnum 92012) was already given back
                        [ 1930.605499] vhci_hcd: unlink->seqnum 92014
                        [ 1930.605943] vhci_hcd: the urb (seqnum 92014) was already given back
                        [ 1930.749651] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1930.750537] vhci_hcd: unlink->seqnum 92180
                        [ 1930.750994] vhci_hcd: the urb (seqnum 92180) was already given back
                        [ 1930.892499] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1930.893423] vhci_hcd: unlink->seqnum 92342
                        [ 1930.893815] vhci_hcd: the urb (seqnum 92342) was already given back
                        [ 1931.450515] vhci_hcd: unlink->seqnum 92942
                        [ 1931.451036] vhci_hcd: the urb (seqnum 92942) was already given back
                        [ 1931.451855] vhci_hcd: unlink->seqnum 92943
                        [ 1931.452310] vhci_hcd: the urb (seqnum 92943) was already given back
                        [ 1932.005934] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1932.007079] vhci_hcd: unlink->seqnum 93538
                        [ 1932.008051] vhci_hcd: the urb (seqnum 93538) was already given back
                        [ 1934.344638] vhci_hcd: unlink->seqnum 93705
                        [ 1934.345318] vhci_hcd: the urb (seqnum 93705) was already given back
                        [ 1934.346020] vhci_hcd: unlink->seqnum 93707
                        [ 1934.346914] vhci_hcd: the urb (seqnum 93707) was already given back
                        [ 1934.492421] vhci_hcd: unlink->seqnum 93877
                        [ 1934.493007] vhci_hcd: the urb (seqnum 93877) was already given back
                        [ 1934.493725] vhci_hcd: unlink->seqnum 93879
                        [ 1934.494085] vhci_hcd: the urb (seqnum 93879) was already given back
                        [ 1934.635685] vhci_hcd: unlink->seqnum 94043
                        [ 1934.636305] vhci_hcd: the urb (seqnum 94043) was already given back
                        [ 1934.637020] vhci_hcd: unlink->seqnum 94045
                        [ 1934.637408] vhci_hcd: the urb (seqnum 94045) was already given back
                        [ 1934.781906] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1934.782873] vhci_hcd: unlink->seqnum 94212
                        [ 1934.783484] vhci_hcd: the urb (seqnum 94212) was already given back
                        [ 1934.928139] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1934.929093] vhci_hcd: unlink->seqnum 94374
                        [ 1934.929506] vhci_hcd: the urb (seqnum 94374) was already given back
                        [ 1935.072487] vhci_hcd: unlink->seqnum 94540
                        [ 1935.073073] vhci_hcd: the urb (seqnum 94540) was already given back
                        [ 1935.073747] vhci_hcd: unlink->seqnum 94542
                        [ 1935.074123] vhci_hcd: the urb (seqnum 94542) was already given back
                        [ 1935.636666] vhci_hcd: unlink->seqnum 95136
                        [ 1935.637325] vhci_hcd: the urb (seqnum 95136) was already given back
                        [ 1935.638064] vhci_hcd: unlink->seqnum 95137
                        [ 1935.638408] vhci_hcd: the urb (seqnum 95137) was already given back
                        [ 1936.206561] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1936.207426] vhci_hcd: unlink->seqnum 95734
                        [ 1936.207861] vhci_hcd: the urb (seqnum 95734) was already given back
                        [ 1938.546194] vhci_hcd: unlink->seqnum 95901
                        [ 1938.547045] vhci_hcd: the urb (seqnum 95901) was already given back
                        [ 1938.547876] vhci_hcd: unlink->seqnum 95902
                        [ 1938.548267] vhci_hcd: the urb (seqnum 95902) was already given back
                        [ 1938.693577] vhci_hcd: unlink->seqnum 96071
                        [ 1938.694092] vhci_hcd: the urb (seqnum 96071) was already given back
                        [ 1938.835928] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1938.836732] vhci_hcd: unlink->seqnum 96236
                        [ 1938.837195] vhci_hcd: the urb (seqnum 96236) was already given back
                        [ 1938.987705] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1938.988677] vhci_hcd: unlink->seqnum 96353
                        [ 1938.989499] vhci_hcd: the urb (seqnum 96353) was already given back
                        [ 1939.135970] vhci_hcd: unlink->seqnum 96522
                        [ 1939.136689] vhci_hcd: the urb (seqnum 96522) was already given back
                        [ 1939.137357] vhci_hcd: unlink->seqnum 96523
                        [ 1939.137810] vhci_hcd: the urb (seqnum 96523) was already given back
                        [ 1939.281588] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1939.282484] vhci_hcd: unlink->seqnum 96689
                        [ 1939.282888] vhci_hcd: the urb (seqnum 96689) was already given back
                        [ 1939.845544] vhci_hcd: unlink->seqnum 97291
                        [ 1939.846182] vhci_hcd: the urb (seqnum 97291) was already given back
                        [ 1939.846917] vhci_hcd: unlink->seqnum 97292
                        [ 1939.847364] vhci_hcd: the urb (seqnum 97292) was already given back
                        [ 1940.417903] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1940.418750] vhci_hcd: unlink->seqnum 97899
                        [ 1940.419149] vhci_hcd: the urb (seqnum 97899) was already given back
                        [ 1942.755591] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1942.756589] vhci_hcd: unlink->seqnum 98066
                        [ 1942.757790] vhci_hcd: the urb (seqnum 98066) was already given back
                        [ 1942.911059] vhci_hcd: unlink->seqnum 98221
                        [ 1942.922839] vhci_hcd: the urb (seqnum 98221) was already given back
                        [ 1942.924368] vhci_hcd: unlink->seqnum 98222
                        [ 1942.925054] vhci_hcd: the urb (seqnum 98222) was already given back
                        [ 1943.070474] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1943.071268] vhci_hcd: unlink->seqnum 98389
                        [ 1943.071663] vhci_hcd: the urb (seqnum 98389) was already given back
                        [ 1943.214148] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1943.215327] vhci_hcd: unlink->seqnum 98555
                        [ 1943.216018] vhci_hcd: the urb (seqnum 98555) was already given back
                        [ 1943.357497] vhci_hcd: unlink->seqnum 98720
                        [ 1943.358063] vhci_hcd: the urb (seqnum 98720) was already given back
                        [ 1943.358735] vhci_hcd: unlink->seqnum 98721
                        [ 1943.359371] vhci_hcd: the urb (seqnum 98721) was already given back
                        [ 1943.500841] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1943.501779] vhci_hcd: unlink->seqnum 98886
                        [ 1943.502181] vhci_hcd: the urb (seqnum 98886) was already given back
                        [ 1944.063008] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1944.064232] vhci_hcd: unlink->seqnum 99489
                        [ 1944.064739] vhci_hcd: the urb (seqnum 99489) was already given back
                        [ 1944.632563] vhci_hcd: unlink->seqnum 100100
                        [ 1944.633273] vhci_hcd: the urb (seqnum 100100) was already given back
                        [ 1944.634220] vhci_hcd: unlink->seqnum 100102
                        [ 1944.634954] vhci_hcd: the urb (seqnum 100102) was already given back
                        [ 1946.987708] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1946.988507] vhci_hcd: unlink->seqnum 100265
                        [ 1946.988882] vhci_hcd: the urb (seqnum 100265) was already given back
                        [ 1947.131863] vhci_hcd: unlink->seqnum 100433
                        [ 1947.132557] vhci_hcd: the urb (seqnum 100433) was already given back
                        [ 1947.133420] vhci_hcd: unlink->seqnum 100435
                        [ 1947.133848] vhci_hcd: the urb (seqnum 100435) was already given back
                        [ 1947.277502] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1947.278353] vhci_hcd: unlink->seqnum 100601
                        [ 1947.278806] vhci_hcd: the urb (seqnum 100601) was already given back
                        [ 1947.421364] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1947.422139] vhci_hcd: unlink->seqnum 100766
                        [ 1947.422522] vhci_hcd: the urb (seqnum 100766) was already given back
                        [ 1947.564322] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1947.565243] vhci_hcd: unlink->seqnum 100931
                        [ 1947.565648] vhci_hcd: the urb (seqnum 100931) was already given back
                        [ 1947.708369] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1947.709290] vhci_hcd: unlink->seqnum 101096
                        [ 1947.709646] vhci_hcd: the urb (seqnum 101096) was already given back
                        [ 1948.271305] vhci_hcd: unlink->seqnum 101700
                        [ 1948.271907] vhci_hcd: the urb (seqnum 101700) was already given back
                        [ 1948.272566] vhci_hcd: unlink->seqnum 101701
                        [ 1948.272967] vhci_hcd: the urb (seqnum 101701) was already given back
                        [ 1948.836005] vhci_hcd: unlink->seqnum 102308
                        [ 1948.836530] vhci_hcd: the urb (seqnum 102308) was already given back
                        [ 1948.837297] vhci_hcd: unlink->seqnum 102310
                        [ 1948.837803] vhci_hcd: the urb (seqnum 102310) was already given back
                        [ 1951.221720] vhci_hcd: unlink->seqnum 102476
                        [ 1951.222227] vhci_hcd: the urb (seqnum 102476) was already given back
                        [ 1951.223094] vhci_hcd: unlink->seqnum 102478
                        [ 1951.223494] vhci_hcd: the urb (seqnum 102478) was already given back
                        [ 1951.366078] vhci_hcd: unlink->seqnum 102645
                        [ 1951.366657] vhci_hcd: the urb (seqnum 102645) was already given back
                        [ 1951.507570] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1951.508420] vhci_hcd: unlink->seqnum 102809
                        [ 1951.508825] vhci_hcd: the urb (seqnum 102809) was already given back
                        [ 1951.649614] vhci_hcd: unlink->seqnum 102972
                        [ 1951.650215] vhci_hcd: the urb (seqnum 102972) was already given back
                        [ 1951.650835] vhci_hcd: unlink->seqnum 102973
                        [ 1951.651252] vhci_hcd: the urb (seqnum 102973) was already given back
                        [ 1951.793651] vhci_hcd: unlink->seqnum 103135
                        [ 1951.794324] vhci_hcd: the urb (seqnum 103135) was already given back
                        [ 1951.795432] vhci_hcd: unlink->seqnum 103137
                        [ 1951.795971] vhci_hcd: the urb (seqnum 103137) was already given back
                        [ 1951.945607] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1951.946650] vhci_hcd: unlink->seqnum 103266
                        [ 1951.947846] vhci_hcd: the urb (seqnum 103266) was already given back
                        [ 1952.526231] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1952.527052] vhci_hcd: unlink->seqnum 103855
                        [ 1952.527565] vhci_hcd: the urb (seqnum 103855) was already given back
                        [ 1953.086825] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1953.087673] vhci_hcd: unlink->seqnum 104455
                        [ 1953.088135] vhci_hcd: the urb (seqnum 104455) was already given back
                        [ 1955.428797] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1955.429715] vhci_hcd: unlink->seqnum 104623
                        [ 1955.430191] vhci_hcd: the urb (seqnum 104623) was already given back
                        [ 1955.572786] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1955.573645] vhci_hcd: unlink->seqnum 104791
                        [ 1955.574106] vhci_hcd: the urb (seqnum 104791) was already given back
                        [ 1955.716720] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1955.717641] vhci_hcd: unlink->seqnum 104957
                        [ 1955.718139] vhci_hcd: the urb (seqnum 104957) was already given back
                        [ 1955.862343] vhci_hcd: unlink->seqnum 105123
                        [ 1955.862955] vhci_hcd: the urb (seqnum 105123) was already given back
                        [ 1955.863721] vhci_hcd: unlink->seqnum 105125
                        [ 1955.864233] vhci_hcd: the urb (seqnum 105125) was already given back
                        [ 1956.025327] vhci_hcd: unlink->seqnum 105299
                        [ 1956.025921] vhci_hcd: the urb (seqnum 105299) was already given back
                        [ 1956.026807] vhci_hcd: unlink->seqnum 105301
                        [ 1956.027397] vhci_hcd: the urb (seqnum 105301) was already given back
                        [ 1956.168997] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1956.169933] vhci_hcd: unlink->seqnum 105466
                        [ 1956.170407] vhci_hcd: the urb (seqnum 105466) was already given back
                        [ 1956.730264] ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32
                        [ 1956.731121] vhci_hcd: unlink->seqnum 106071
                        [ 1956.731612] vhci_hcd: the urb (seqnum 106071) was already given back

                        #process4 output

                        Every 2.0s: python /data/voxl-esc-add-new-params/voxl-esc-tools/voxl-esc-scan.py --enable-debug 1 PW-CONTROL07: Wed Jun 21 17:11:43 2023

                        Detected Python version : 3.8.0 (default, Jun 18 2023, 12:37:59)
                        [GCC 11.3.0]
                        Found voxl-esc tools bin version: 1.2
                        INFO: All COM ports:
                        /dev/ttyUSB0 : TTL232RG-VREG3V3 - TTL232RG-VREG3V3
                        INFO: UART Port Candidates:
                        /dev/ttyUSB0
                        INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 2000000
                        UART TX: AF 06 00 00 91 C1
                        UART TX: AF 06 18 00 9B C1
                        UART TX: AF 06 00 01 50 01
                        UART TX: AF 06 18 01 5A 01
                        UART TX: AF 06 00 02 10 00
                        UART TX: AF 06 18 02 1A 00
                        UART TX: AF 06 00 03 D1 C0
                        UART TX: AF 06 18 03 DB C0
                        INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 250000
                        UART TX: AF 06 00 00 91 C1
                        UART TX: AF 06 18 00 9B C1
                        UART TX: AF 06 00 01 50 01
                        UART TX: AF 06 18 01 5A 01
                        UART TX: AF 06 00 02 10 00
                        UART TX: AF 06 18 02 1A 00
                        UART TX: AF 06 00 03 D1 C0
                        UART TX: AF 06 18 03 DB C0
                        INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 921600
                        UART TX: AF 06 00 00 91 C1
                        UART TX: AF 06 18 00 9B C1
                        UART TX: AF 06 00 01 50 01
                        UART TX: AF 06 18 01 5A 01
                        UART TX: AF 06 00 02 10 00
                        UART TX: AF 06 18 02 1A 00
                        UART TX: AF 06 00 03 D1 C0
                        UART TX: AF 06 18 03 DB C0
                        INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 230400
                        UART TX: AF 06 00 00 91 C1
                        UART TX: AF 06 18 00 9B C1
                        UART TX: AF 06 00 01 50 01
                        UART TX: AF 06 18 01 5A 01
                        UART TX: AF 06 00 02 10 00
                        UART TX: AF 06 18 02 1A 00
                        UART TX: AF 06 00 03 D1 C0
                        UART TX: AF 06 18 03 DB C0
                        INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 57600
                        UART TX: AF 06 00 00 91 C1
                        UART TX: AF 06 18 00 9B C1
                        UART TX: AF 06 00 01 50 01
                        UART TX: AF 06 18 01 5A 01
                        UART TX: AF 06 00 02 10 00
                        UART TX: AF 06 18 02 1A 00
                        UART TX: AF 06 00 03 D1 C0
                        UART TX: AF 06 18 03 DB C0
                        INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 115200
                        UART TX: AF 06 00 00 91 C1
                        UART TX: AF 06 18 00 9B C1
                        UART TX: AF 06 00 01 50 01
                        UART TX: AF 06 18 01 5A 01
                        UART TX: AF 06 00 02 10 00
                        UART TX: AF 06 18 02 1A 00
                        UART TX: AF 06 00 03 D1 C0
                        UART TX: AF 06 18 03 DB C0
                        INFO: Scanning for ESC bootloader: /dev/ttyUSB0, baud: 38400
                        UART TX: AF 06 00 00 91 C1
                        UART TX: AF 06 18 00 9B C1
                        UART TX: AF 06 00 01 50 01
                        UART TX: AF 06 18 01 5A 01
                        UART TX: AF 06 00 02 10 00
                        UART TX: AF 06 18 02 1A 00
                        UART TX: AF 06 00 03 D1 C0
                        UART TX: AF 06 18 03 DB C0
                        UART TX: FA FA 00 05 64 32 3E 65 1A
                        UART TX: FA FA 00 05 64 32 3E 65 1A
                        UART TX: FA FA 00 05 64 32 3E 65 1A
                        UART TX: FA FA 00 05 64 32 3E 65 1A
                        UART TX: FA FA 00 05 64 32 3E 65 1A
                        UART TX: FA FA 00 05 65 B5 92 BD 1B
                        UART TX: FA FA 00 05 65 B5 92 BD 1B
                        UART TX: FA FA 00 05 65 B5 92 BD 1B
                        UART TX: FA FA 00 05 65 B5 92 BD 1B
                        UART TX: FA FA 00 05 65 B5 92 BD 1B
                        UART TX: FA FA 00 05 66 3C 67 D4 19

                        Alex KushleyevA 1 Reply Last reply Reply Quote 0
                        • Alex KushleyevA
                          Alex Kushleyev ModalAI Team @ErezI
                          last edited by

                          @ErezI sorry i missed your earlier message. Please email me at akushley @ modalai . com and we will discuss via email. No need to re-send the previous information. Thank you.

                          E 2 Replies Last reply Reply Quote 0
                          • E
                            ErezI @Alex Kushleyev
                            last edited by

                            @Alex-Kushleyev
                            OK
                            Thanks

                            1 Reply Last reply Reply Quote 0
                            • E
                              ErezI @Alex Kushleyev
                              last edited by

                              @Alex-Kushleyev

                              Hi Alex

                              When we try to verify or update ESC params (xml file) to the F5A esc,
                              we get the following error:

                              data/voxl-esc-add-new-params/voxl-esc-tools$ sudo ./voxl-esc-verify-params.py
                              Detected Python version : 3.8.10 (default, May 26 2023, 14:05:08)
                              [GCC 9.4.0]
                              Found voxl-esc tools bin version: 1.2
                              INFO: All COM ports:
                              /dev/ttyS4 : n/a
                              /dev/ttyUSB0 : TTL232R
                              INFO: UART Port Candidates:
                              /dev/ttyUSB0
                              Found previous connection information in .voxl_esc_cache ..
                              Prioritizing /dev/ttyUSB0 @ 2000000
                              INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 2000000
                              INFO: ESC(s) detected on port: /dev/ttyUSB0, baud rate: 2000000
                              Exception in thread uartserial:
                              Traceback (most recent call last):
                              File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
                              self.run()
                              File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/uarttransceiver.py", line 100, in run
                              File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/escmanager.py", line 135, in handle_packets
                              File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/escmanager.py", line 270, in handle_config_data
                              File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/esc.py", line 84, in set_params
                              File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/params.py", line 268, in parse_params
                              File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/params.py", line 394, in parse_tune_params
                              Exception: Tune length got: 136, expected: 180
                              Tune config CRC mismatch 42914 != 0
                              ERROR: Params for ID 0 are invalid!
                              ID config CRC mismatch 60163 != 0
                              ERROR: Params for ID 1 are invalid!
                              ID config CRC mismatch 60163 != 0
                              ERROR: Params for ID 2 are invalid!
                              ID config CRC mismatch 60163 != 0
                              ERROR: Params for ID 3 are invalid!
                              ERROR: Params from ID 0 and 1 are not the same
                              ERROR: Params from ID 0 and 2 are not the same
                              ERROR: Params from ID 0 and 3 are not the same
                              ERROR: Some params are invalid or not the same!
                              Number of ESCs expected : 4
                              Number of ESCs found : 4
                              Number of invalid params : 4
                              Number of matched params : 1
                              user@user-CF-54-3:/data/voxl-esc-add-new-params/voxl-esc-tools$

                              [sudo] password for user:
                              Starting Wizard

                              What do you want to do?

                              1. scan 3) spin 5) upload_params
                              2. detect 4) upgrade_firmware
                                #? 5

                              Which ?

                              1. starling_v2 3) fpv_revB 5) MPD

                              2. sentinel_v1 4) starling_m129
                                #? 5
                                uploading params file ../voxl-esc-params/MPD/mpd_params.xml
                                enabling bridge
                                Failed to get unit file state for voxl-px4.service: No such file or directory
                                bridge enabled
                                Detected Python version : 3.8.10 (default, May 26 2023, 14:05:08)
                                [GCC 9.4.0]
                                Found voxl-esc tools bin version: 1.2
                                INFO: All COM ports:
                                /dev/ttyS4 : n/a
                                /dev/ttyUSB0 : TTL232R
                                INFO: UART Port Candidates:
                                /dev/ttyUSB0
                                Found previous connection information in .voxl_esc_cache ..
                                Prioritizing /dev/ttyUSB0 @ 2000000
                                INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 2000000
                                INFO: ESC(s) detected on port: /dev/ttyUSB0, baud rate: 2000000
                                INFO: Detected protocol: firmware
                                INFO: Additional Information:
                                INFO: ---------------------
                                ID : 0
                                Board : version 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
                                UID : 0x203135385631500200730034
                                Firmware : version 37, hash ba6d193a*
                                Bootloader : version 0, hash 7a01a780

                                ID : 1
                                Board : version 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
                                UID : 0x203135385631500200320035
                                Firmware : version 37, hash ba6d193a*
                                Bootloader : version 0, hash 7a01a780

                                ID : 2
                                Board : version 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
                                UID : 0x203135385631500200340033
                                Firmware : version 37, hash ba6d193a*
                                Bootloader : version 0, hash 7a01a780

                                ID : 3
                                Board : version 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
                                UID : 0x203135385631500200710034
                                Firmware : version 37, hash ba6d193a*
                                Bootloader : version 0, hash 7a01a780


                              successfully pinged ESCs
                              Detected Python version : 3.8.10 (default, May 26 2023, 14:05:08)
                              [GCC 9.4.0]
                              Found voxl-esc tools bin version: 1.2

                              INFO: Params file name : ../voxl-esc-params/MPD/mpd_params.xml
                              INFO: Params file size : 6959 bytes

                              INFO: All COM ports:
                              /dev/ttyS4 : n/a
                              /dev/ttyUSB0 : TTL232R
                              INFO: UART Port Candidates:
                              /dev/ttyUSB0
                              Found previous connection information in .voxl_esc_cache ..
                              Prioritizing /dev/ttyUSB0 @ 2000000
                              INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 2000000
                              INFO: ESC(s) detected on port: /dev/ttyUSB0, baud rate: 2000000
                              INFO: ESCs detected:
                              INFO: ---------------------
                              ID: 0, SW: 37, HW: 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
                              ID: 1, SW: 37, HW: 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
                              ID: 2, SW: 37, HW: 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
                              ID: 3, SW: 37, HW: 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)

                              INFO: Loading XML config file...
                              Traceback (most recent call last):
                              File "voxl-esc-upload-params.py", line 114, in <module>
                              esc.params.parse_xml_string( xml_string )
                              File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/params.py", line 518, in parse_xml_string
                              File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/params.py", line 935, in set_packet_metadata
                              File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/params.py", line 249, in update_crc
                              File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/params.py", line 165, in get_param_bytes_for_crc
                              File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/params.py", line 85, in byteify
                              struct.error: pack expected 12 items for packing (got 4)
                              disabling bridge
                              bridge disabled

                              we use the following xml file for the f40 pro 2400kv:
                              sudo cat ./mpd_params.xml
                              <?xml version="1.0" encoding="UTF-8"?>

                              <!-- Copyright (c) 2020 ModalAI Inc.

                              Redistribution and use in source and binary forms, with or without
                              modification, are permitted provided that the following conditions are met:

                              1. Redistributions of source code must retain the above copyright notice,
                                this list of conditions and the following disclaimer.

                              2. Redistributions in binary form must reproduce the above copyright notice,
                                this list of conditions and the following disclaimer in the documentation
                                and/or other materials provided with the distribution.

                              3. Neither the name of the copyright holder nor the names of its contributors
                                may be used to endorse or promote products derived from this software
                                without specific prior written permission.

                              4. The Software is used solely in conjunction with devices provided by
                                ModalAI Inc.

                              THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
                              AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                              IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                              ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
                              LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
                              CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
                              SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                              INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
                              CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
                              ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                              POSSIBILITY OF SUCH DAMAGE.

                              For a license to use on non-ModalAI hardware, please contact license@modalai.com -->

                              <EscParameters>

                              <IdParams>
                              <param name="id" value="127"/> <!-- 0-7 .. 127 means use hardware ID pins to read ID-->
                              <param name="dir" value="2"/> <!-- 0=fwd, 1=rev, 2=fwd id-based, 3=rev id-based -->
                              </IdParams>

                              <BoardParams>
                              <param name="id_map" value="[0, 1, 2, 3, 4, 5, 6, 7]"/> <!-- reserved for future use -->
                              <param name="vsense_scale" value="6.0"/> <!-- voltage_mv = adc_val_mv * vsense_mult / vsense_ div -->
                              <param name="isense_scale" value="18.25"/> <!-- Ima * 0.001 * 50 = Vmv, so mult is 1 / (0.001 * 50) = 20 . Note that actual gain is a bit off -->
                              <param name="isense_zero_mv" value="550"/> <!-- voltage offset of current sensor when current is zero (0.55V by design) -->
                              </BoardParams>

                              <UartParams>
                              <param name="protocol_version" value="2"/> <!-- reserved for future use -->
                              <param name="input_mode" value="0"/> <!-- reserved for future use -->
                              <param name="baud_rate" value="2000000"/> <!-- communication bit rate -->
                              <param name="char_timeout_ns" value="0"/> <!-- not used -->
                              <param name="cmd_timeout_ns" value="100000000"/> <!-- timeout for incoming commands before ESC will stop the motor -->
                              </UartParams>

                              <TuneParams>
                              <param name="pwm_frequency" value="48000"/> <!-- switching freqency of PWM signal going to motors. 24Khz and 48Khz are only options for now -->
                              <param name="vbat_nominal_mv" value="14800"/> <!-- used for sanity checking and limiting of voltage-dependent funcions -->
                              <param name="num_cycles_per_rev" value="7"/> <!-- number of pole pairs in the motor. used for converting electrical frequency to mechanical rpm -->
                              <param name="min_rpm" value="1000"/> <!-- minimum RPM that will be attempted, otherwise capped -->
                              <param name="max_rpm" value="25000"/> <!-- maximum RPM that will be attempted, otherwise capped -->
                              <param name="min_pwm" value="50"/> <!-- cap for minimum power to be ever applied. max is 999 -->
                              <param name="max_pwm" value="999"/> <!-- cap for maximum power to be ever applied. max is 999 -->
                              <param name="pwm_vs_rpm_curve_a0" value="870.0"/> <!-- this is actually motor_voltage vs rpm curve.. using legacy naming -->
                              <param name="pwm_vs_rpm_curve_a1" value="0.5"/> <!-- Emax RS1306 3300KV with tri-blade 3x3x3 -->
                              <param name="pwm_vs_rpm_curve_a2" value="3.0e-06"/>
                              <param name="kp" value="250"/> <!-- RPM controller proportional gain -->
                              <param name="ki" value="30"/> <!-- RPM controller proportional gain -->
                              <param name="max_kpe" value="300"/> <!-- maximum proportional erorr term (max is 999) -->
                              <param name="max_kie" value="100"/> <!-- maximum integral error term (max is 999) -->
                              <param name="max_rpm_delta" value="3000"/> <!-- cap for maximum rpm error used in RPM controller -->

                              <param name="alignment_time_ns"   value="0"/>
                              <param name="spinup_power"        value="70"/>      <!-- power used to give the motor initial kick (out of 999) -->
                              <param name="latch_power"         value="80"/>     <!-- power used during latching stage of spin-up (out of 999)-->
                              <param name="min_num_cross_for_closed_loop" value="50"/>  <!-- exit latching mode of fixed power after this number of zero crossings -->
                              
                              <param name="brake_to_stop"       value="0"/>             <!-- apply brake when stopping motor (or not) -->
                              <param name="stall_timeout_ns"    value="20000000"/>      <!-- after spin-up, if no zero crossing is not detected for this amount of time, motor is considered stalled -->
                              <param name="require_reset_if_stalled"      value="0"/>   <!-- require sending an array of zero commands to reset before next spin-up, if motor stalled -->
                              

                              <!-- <param name="tone_freqs_10hz" value="[200, 215, 225, 250]"/> --> <!-- 200 is 2000Hz, max 255 -->
                              <!-- <param name="tone_times_ms" value="[10, 10, 10, 10]"/> --> <!-- duration of each tone in units of 10 milli-seconds. Poor naming!!! -->
                              <param name="tone_powers" value="[100, 100, 100, 100]"/> <!-- max is 255 -->

                              <param name="dt_threshold_ns"       value="150000"/>      <!-- during start up, ignore inter-commutation times less than this val, probably noise -->
                              <param name="max_dt_ns"             value="2500000"/>     <!-- min and max values for time between two commutations. these are used as caps -->
                              <param name="min_dt_ns"             value="10000"/>
                              <param name="dt_bootstrap_ns"       value="2000000"/>     <!-- filter bootstrap value for commutation dt during start up -->
                              
                              <param name="spinup_stall_dt_ns"    value="6000000"/>     <!-- during spin-up, if no zero crossing is not detected for this amount of time, motor is considered stalled -->
                              <param name="spinup_stall_check_ns" value="30000000"/>    <!-- time after beginning of spinup to start checking for spinup stall -->
                              
                              <param name="timing_advance"        value="0"/>
                              <param name="sense_advance"         value="0"/>
                              
                              <param name="demag_timing"          value="0"/>    <!-- unused -->
                              

                              </TuneParams>
                              </EscParameters>

                              Thanks,

                              Erez

                              Alex KushleyevA 1 Reply Last reply Reply Quote 0
                              • Alex KushleyevA
                                Alex Kushleyev ModalAI Team @ErezI
                                last edited by

                                @ErezI

                                We recently updated the parameter structure in the ESC params. The ESCs you have are using older params. If you wanted to verify or update those params, please use the following version of voxl-esc tools : https://gitlab.com/voxl-public/voxl-sdk/utilities/voxl-esc/-/tree/v1.1.1

                                If you want to use the latest params, a firmware update and param update is required.
                                You can use the latest voxl-esc tools : https://gitlab.com/voxl-public/voxl-sdk/utilities/voxl-esc/-/tree/v1.2.2

                                update the firmware on all ESCs:
                                ./voxl-esc-upload-firmware-all.sh firmware/modalai_esc_firmware_tmotor_f55a_revc_v0_38_9b6d54b6.bin

                                At this point the ESCs will make a sad tone because the params will be invalid. Now update the params to the latest default params for the tmotor ESC.
                                ./voxl-esc-upload-params.py --params-file ../voxl-esc-params/FPV_RevB/FPV_RevB.xml

                                After this, you should have the ESC updated firmware and params to the latest. Next you can diff your desired params against the latest params you just loaded, and create a new version of your params.

                                I noticed that you have pretty high kp and ki values. If you are just starting out, i would suggest setting kp=0 and ki=0, this will result in performance close to a off-the-shelf ESC. having gains set too high could result in vibrations or motors heating up, it will require some more careful testing.

                                Additionally, i noticed that your tuning params do not have a lot of precision, which will result in incorrect curve. You should have at least 3 or preferably 6 decimal places for each of a0, a1, a2 to avoid any error. You can copy paste them directly from the calibration procedure.

                                <param name="pwm_vs_rpm_curve_a0" value="870.0"/>
                                <param name="pwm_vs_rpm_curve_a1" value="0.5"/>
                                <param name="pwm_vs_rpm_curve_a2" value="3.0e-06"/>

                                Alex

                                E 4 Replies Last reply Reply Quote 0
                                • E
                                  ErezI @Alex Kushleyev
                                  last edited by

                                  @Alex-Kushleyev

                                  Alex Hi

                                  Thanks for your fast & supporting respond.

                                  1.We got negative values for a0 (-500 to -1000) and not your recommended positive value
                                  <param name="pwm_vs_rpm_curve_a0" value="870.0"/>
                                  <param name="pwm_vs_rpm_curve_a1" value="0.5"/>
                                  <param name="pwm_vs_rpm_curve_a2" value="3.0e-06"/>

                                  Should a0 be a negative value (-870) or a positive on (a correctness value?)?

                                  2.We got different parameter values to the curves while running multiple calibration tests t
                                  o the same ESCx-Motx couples,
                                  and of course different values testing a different ESCx-Motx couples.

                                  What should be (how to choose/ calculate) the right a0,a1 & a2 values for the single uploaded parameters file (avg?)

                                  20230712-150720_ESC_#3_Volt_vs_RPM.jpg 20230712-150654_ESC_#2_Volt_vs_RPM.jpg 20230712-150617_ESC_#1_Volt_vs_RPM.jpg 20230712-150539_ESC_#0_Volt_vs_RPM.jpg 20230712-150233_ESC_#0_Volt_vs_RPM.jpg

                                  Thanks Erez

                                  ps

                                  New voxl-esc-calibrate.py with a0-a2 inside the graphs and
                                  created under the logs folder

                                  cat ./voxl-esc-calibrate2.py

                                  Copyright (c) 2020 ModalAI Inc.

                                  Redistribution and use in source and binary forms, with or without

                                  modification, are permitted provided that the following conditions are met:

                                  1. Redistributions of source code must retain the above copyright notice,

                                  this list of conditions and the following disclaimer.

                                  2. Redistributions in binary form must reproduce the above copyright notice,

                                  this list of conditions and the following disclaimer in the documentation

                                  and/or other materials provided with the distribution.

                                  3. Neither the name of the copyright holder nor the names of its contributors

                                  may be used to endorse or promote products derived from this software

                                  without specific prior written permission.

                                  4. The Software is used solely in conjunction with devices provided by

                                  ModalAI Inc.

                                  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

                                  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

                                  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

                                  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE

                                  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

                                  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

                                  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

                                  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

                                  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

                                  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

                                  POSSIBILITY OF SUCH DAMAGE.

                                  For a license to use on non-ModalAI hardware, please contact license@modalai.com

                                  from voxl_esc_setup_paths import *
                                  voxl_esc_setup_paths()

                                  from libesc import *
                                  from esc_scanner import EscScanner
                                  import time
                                  import numpy as np
                                  import argparse

                                  parser = argparse.ArgumentParser(description='ESC Calibration Script')
                                  parser.add_argument('--device', required=False, default=None)
                                  parser.add_argument('--baud_rate', required=False, default=None)
                                  parser.add_argument('--id', type=int, required=False, default=0)
                                  parser.add_argument('--pwm-min', type=int, required=False, default=10)
                                  parser.add_argument('--pwm-max', type=int, required=False, default=90)
                                  parser.add_argument('--pwm-step', type=int, required=False, default=1)
                                  parser.add_argument('--pwm-step-duration', type=float, required=False, default=0.5) #seconds
                                  args = parser.parse_args()

                                  devpath = args.device
                                  baudrate = args.baud_rate
                                  esc_id = args.id
                                  PWM_MIN = args.pwm_min
                                  PWM_MAX = args.pwm_max
                                  PWM_STEP = args.pwm_step
                                  STEPDURATION = args.pwm_step_duration

                                  quick scan for ESCs to detect the port

                                  scanner = EscScanner()
                                  (devpath, baudrate) = scanner.scan(devpath, baudrate)

                                  if devpath is not None and baudrate is not None:
                                  print('INFO: ESC(s) detected on port: ' + devpath + ', baud rate: ' + str(baudrate))
                                  else:
                                  print('ERROR: No ESC(s) detected, exiting.')
                                  sys.exit(1)

                                  #check input arguments
                                  if PWM_MIN < 10 or PWM_MIN > 50:
                                  print('ERROR: Minimum power must be between 10 and 50')
                                  sys.exit(1)

                                  if PWM_MAX < 10 or PWM_MAX > 100:
                                  print('ERROR: Maximum power must be between 10 and 100')
                                  sys.exit(1)

                                  if PWM_MAX < PWM_MIN:
                                  print('ERROR: Maximum power must be greater than minimum power')
                                  sys.exit(1)

                                  TRANSITIONTIME = 0.40

                                  create ESC manager and search for ESCs

                                  try:
                                  esc_manager = EscManager()
                                  esc_manager.open(devpath, baudrate)
                                  except Exception as e:
                                  print('ERROR: Unable to connect to ESCs :')
                                  print(e)
                                  sys.exit(1)

                                  wait a little to let manager find all ESCs

                                  time.sleep(0.25)
                                  num_escs = len(esc_manager.get_escs())
                                  if num_escs < 1:
                                  print('ERROR: No ESCs detected--exiting.')
                                  sys.exit(1)

                                  esc = esc_manager.get_esc_by_id(esc_id)
                                  if esc is None:
                                  print('ERROR: Specified ESC ID not found--exiting.')
                                  sys.exit(1)

                                  warn user

                                  print('WARNING: ')
                                  print('This test requires motors to spin at high speeds with')
                                  print('propellers attached. Please ensure that appropriate')
                                  print('protective equipment is being worn at all times and')
                                  print('that the motor and propeller are adequately isolated')
                                  print('from all persons.')
                                  print('')
                                  print('For best results, please perform this test at the')
                                  print('nominal voltage for the battery used.')
                                  print('')
                                  response = input('Type "Yes" to continue: ')
                                  if response not in ['yes', 'Yes', 'YES']:
                                  print('Test canceled by user')
                                  sys.exit(1)

                                  get ESC software version. sw_version < 20 means gen1 ESC, otherwise gen2

                                  sw_version = esc.get_versions()[0]

                                  esc_manager.enable_protocol_logging()

                                  spin up

                                  esc_manager.set_highspeed_fb(esc_id) #tell ESC manager to only request feedback from this ID (so we get feedback 4x more often)
                                  esc.set_target_power(10)
                                  t_start = time.time()
                                  while time.time() - t_start < 1.0:
                                  time.sleep(0.05)
                                  esc_manager.send_pwm_targets()

                                  measurements = []
                                  t_test_start= time.time()

                                  ramp up from min to max

                                  pwm_now = PWM_MIN #10
                                  while pwm_now <= PWM_MAX:
                                  esc.set_target_power(pwm_now)
                                  t_start = time.time()
                                  print('')
                                  while time.time() - t_start < STEPDURATION:
                                  time.sleep(0.01)
                                  esc_manager.send_pwm_targets()
                                  if pwm_now >= PWM_MIN and time.time() - t_start >= TRANSITIONTIME:
                                  measurements.append(
                                  [esc.get_power(), esc.get_rpm(), esc.get_voltage(), esc.get_current()])
                                  print('POW: %d, RPM: %.2f, Voltage: %.2fV, Current: %.2fA' % (esc.get_power(), esc.get_rpm(), esc.get_voltage(), esc.get_current()))
                                  pwm_now += PWM_STEP

                                  close the manager and UART thread

                                  esc_manager.close()
                                  t_test_stop= time.time()
                                  print ('INFO: Test took %.2f seconds' % (t_test_stop-t_test_start))

                                  #d_date=datetime.datetime.now()
                                  d_date="{:%Y%m%d-%H%M%S}".format(datetime.now())
                                  print ("date="+str(d_date))

                                  parse measurements

                                  pwms = [data[0] for data in measurements]
                                  rpms = [data[1] for data in measurements]
                                  voltages = [data[2] for data in measurements]
                                  currents = [data[3] for data in measurements]

                                  #reported power is 0-100, but in ESC firmware it is 0-1000
                                  motor_voltages = [pwms[i]10.0/999.0(voltages[i]*1000) for i in range(len(pwms))]

                                  linear fit or quadratic fit

                                  ply = np.polyfit(rpms, motor_voltages, 2)
                                  motor_voltages_fit = np.polyval(ply, rpms)

                                  print corresponding params

                                  print('Quadratic fit: motor_voltage = a2rpm_desired^2 + a1rpm_desired + a0')
                                  print(' a0 = ' + str(ply[2]))
                                  print(' a1 = ' + str(ply[1]))
                                  print(' a2 = ' + str(ply[0]))
                                  print('ESC Params (after scaling):')
                                  print(' pwm_vs_rpm_curve_a0 = ' + str(ply[2]))
                                  print(' pwm_vs_rpm_curve_a1 = ' + str(ply[1]))
                                  print(' pwm_vs_rpm_curve_a2 = ' + str(ply[0]))

                                  plot results if possible

                                  try:
                                  import matplotlib.pyplot as plt
                                  except:
                                  print('WARNING: In order to plot the results, install the Python "matplotlib" module')
                                  sys.exit(0)

                                  plot the results

                                  plt.plot(rpms, motor_voltages, 'bo')
                                  plt.tight_layout()
                                  plt.plot(rpms, motor_voltages_fit)
                                  print ('Motor Voltage vs. RPM Test')
                                  plt.xlabel('Measured RPM')
                                  plt.ylabel('Commanded Motor Voltage (mV)')
                                  plt.title('Motor Voltage vs. RPM Test')
                                  plt.legend(['Data', 'Fit'], loc=2)
                                  plt.ylim([0, np.max(motor_voltages)+1000])
                                  plt.tight_layout()
                                  print ('Motor Voltage vs. RPM Test')
                                  plt.tight_layout()

                                  plot corresponding params

                                  plt.figtext(0.5, 0.01, "Quadratic fit: motor_voltage = a2rpm_desired^2 + a1rpm_desired + a0", ha="center", fontsize=10, bbox={"facecolor":"orange", "alpha":0.5, "pad":5})
                                  plt.figtext(0.2, 0.97, 'a0=%.8f' % ply[2], ha="center", fontsize=10, bbox={"facecolor":"green", "alpha":0.5, "pad":5})
                                  plt.figtext(0.5, 0.97, 'a1=%.8f' % ply[1], ha="center", fontsize=10, bbox={"facecolor":"green", "alpha":0.5, "pad":5})
                                  plt.figtext(0.8, 0.97, 'a2=%.8f' % ply[0], ha="center", fontsize=10, bbox={"facecolor":"green", "alpha":0.5, "pad":5})
                                  plt.tight_layout()

                                  plt.savefig('./logs/'+str(d_date)+'ESC#'+str(esc_id)+'_Volt_vs_RPM.jpg',bbox_inches='tight')
                                  #time.sleep(2)

                                  plt.figure()

                                  plt.plot(pwms, rpms, 'bo')
                                  print ('RMP vs. PWM Test')
                                  plt.xlabel('Commanded PWM (x/100)')
                                  plt.ylabel('Measured RPM')
                                  plt.title('RPM vs. PWM Test')
                                  plt.tight_layout()

                                  plot corresponding params

                                  plt.figtext(0.5, 0.01, "ESC Params (after scaling):", ha="center", fontsize=10, bbox={"facecolor":"orange", "alpha":0.5, "pad":5})
                                  plt.figtext(0.3, 0.97, 'a0=%.8f' % ply[2], ha="center", fontsize=10, bbox={"facecolor":"yellow", "alpha":0.5, "pad":5})
                                  plt.figtext(0.6, 0.97, 'a1=%.8f' % ply[1], ha="center", fontsize=10, bbox={"facecolor":"yellow", "alpha":0.5, "pad":5})
                                  plt.figtext(0.9, 0.97, 'a2=%.8f' % ply[0], ha="center", fontsize=10, bbox={"facecolor":"yellow", "alpha":0.5, "pad":5})

                                  plt.savefig('./logs/'+str(d_date)+'ESC#'+str(esc_id)+'_RPM_vs_PWM.jpg',bbox_inches='tight')
                                  plt.show()
                                  plt.close()

                                  1 Reply Last reply Reply Quote 0
                                  • E
                                    ErezI @Alex Kushleyev
                                    last edited by

                                    @Alex-Kushleyev

                                    Hi Alex,

                                    I replaced the F55A ESCs firmware from version 33 to version 38
                                    (modalai_esc_firmware_tmotor_f55a_revc_v0_38_9b6d54b6.bin),
                                    and used he new code version (v1.2.2) &
                                    also used the new XML file (FPV_RevB.xml renamed to mpd_params.xml)
                                    but I got the same errors:

                                    user@user-CF-54-3:/data/voxl-esc-v1.2.2/voxl-esc-tools$ sudo python3 ./voxl-esc-upload-params.py --params-file ../../voxl-esc-add-new-params/voxl-esc-params/MPD/mpd_params.xml
                                    Detected Python version : 3.8.10 (default, May 26 2023, 14:05:08)
                                    [GCC 9.4.0]
                                    Found voxl-esc tools bin version: 1.2

                                    INFO: Params file name : ../../voxl-esc-add-new-params/voxl-esc-params/MPD/mpd_params.xml
                                    INFO: Params file size : 6835 bytes

                                    INFO: All COM ports:
                                    /dev/ttyS4 : n/a
                                    /dev/ttyUSB0 : TTL232R
                                    INFO: UART Port Candidates:
                                    /dev/ttyUSB0
                                    INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 2000000
                                    INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 250000
                                    INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 921600
                                    INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 230400
                                    INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 57600
                                    INFO: ESC(s) detected on port: /dev/ttyUSB0, baud rate: 57600
                                    INFO: ESCs detected:
                                    INFO: ---------------------
                                    ID: 0, SW: 38, HW: 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
                                    ID: 1, SW: 38, HW: 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
                                    ID: 2, SW: 38, HW: 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
                                    ID: 3, SW: 38, HW: 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)

                                    INFO: Loading XML config file...
                                    WARNING: Tune Parameter "tone_freqs_10hz" incompatible
                                    WARNING: Tune Parameter "tone_times_ms" incompatible
                                    Traceback (most recent call last):
                                    File "./voxl-esc-upload-params.py", line 124, in <module>
                                    esc.params.parse_xml_string( xml_string )
                                    File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/params.py", line 518, in parse_xml_string
                                    File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/params.py", line 935, in set_packet_metadata
                                    File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/params.py", line 249, in update_crc
                                    File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/params.py", line 165, in get_param_bytes_for_crc
                                    File "./tmp/voxl-esc-tools-bin-export-1.2/libesc/params.py", line 85, in byteify
                                    struct.error: pack expected 12 items for packing (got 4)

                                    Erez

                                    1 Reply Last reply Reply Quote 0
                                    • E
                                      ErezI @Alex Kushleyev
                                      last edited by

                                      @Alex-Kushleyev

                                      Alex,

                                      more info

                                      /data/voxl-esc-v1.2.2/voxl-esc-tools$ sudo ./voxl-esc-verify-params.py
                                      Detected Python version : 3.8.10 (default, May 26 2023, 14:05:08)
                                      [GCC 9.4.0]
                                      Found voxl-esc tools bin version: 1.2
                                      INFO: All COM ports:
                                      /dev/ttyS4 : n/a
                                      /dev/ttyUSB0 : TTL232R
                                      INFO: UART Port Candidates:
                                      /dev/ttyUSB0
                                      Found previous connection information in .voxl_esc_cache ..
                                      Prioritizing /dev/ttyUSB0 @ 57600
                                      INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 57600
                                      INFO: ESC(s) detected on port: /dev/ttyUSB0, baud rate: 57600
                                      ID config CRC mismatch 60163 != 0
                                      ERROR: Params for ID 0 are invalid!
                                      ID config CRC mismatch 60163 != 0
                                      ERROR: Params for ID 1 are invalid!
                                      ID config CRC mismatch 60163 != 0
                                      ERROR: Params for ID 2 are invalid!
                                      ID config CRC mismatch 60163 != 0
                                      ERROR: Params for ID 3 are invalid!
                                      ERROR: Some params are invalid or not the same!
                                      Number of ESCs expected : 4
                                      Number of ESCs found : 4
                                      Number of invalid params : 4
                                      Number of matched params : 4

                                      1 Reply Last reply Reply Quote 0
                                      • E
                                        ErezI @Alex Kushleyev
                                        last edited by

                                        @Alex-Kushleyev

                                        Alex,

                                        With the new file it works:

                                        sudo python3 ./voxl-esc-upload-params.py --params-file ../voxl-esc-params/FPV_RevB/FPV_RevB.xml
                                        Detected Python version : 3.8.10 (default, May 26 2023, 14:05:08)
                                        [GCC 9.4.0]
                                        Found voxl-esc tools bin version: 1.2

                                        INFO: Params file name : ../voxl-esc-params/FPV_RevB/FPV_RevB.xml
                                        INFO: Params file size : 7663 bytes

                                        INFO: All COM ports:
                                        /dev/ttyS4 : n/a
                                        /dev/ttyUSB0 : TTL232R
                                        INFO: UART Port Candidates:
                                        /dev/ttyUSB0
                                        Found previous connection information in .voxl_esc_cache ..
                                        Prioritizing /dev/ttyUSB0 @ 57600
                                        INFO: Scanning for ESC firmware: /dev/ttyUSB0, baud: 57600
                                        INFO: ESC(s) detected on port: /dev/ttyUSB0, baud rate: 57600
                                        INFO: ESCs detected:
                                        INFO: ---------------------
                                        ID: 0, SW: 38, HW: 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
                                        ID: 1, SW: 38, HW: 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
                                        ID: 2, SW: 38, HW: 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)
                                        ID: 3, SW: 38, HW: 33: Blheli32 4-in-1 ESC Type B (Tmotor F55A PRO G071)

                                        INFO: Loading XML config file...
                                        INFO: Uploading params...
                                        -- board config
                                        -- id config
                                        -- uart config
                                        -- tune config
                                        DONE
                                        INFO: Resetting ESCs...
                                        DONE

                                        I'll change the relevant parameters to fit our motor's type.

                                        Thanks

                                        Erez

                                        Alex KushleyevA 1 Reply Last reply Reply Quote 0
                                        • Alex KushleyevA
                                          Alex Kushleyev ModalAI Team @ErezI
                                          last edited by

                                          @ErezI

                                          When it comes to comparing the quadratic curve fits, it is difficult to look at just the coefficients and compare them. If you have multiple tests, you should plot the quadratic plots on the same figure and see how repeatable they are. What may seem like a noticeable variation in the coefficients, could still result in curves that are very similar.

                                          By the way, you should not just average values of a0, a1, and a2 to get a0_average, a1_average, and a2_average, as this will result in wrong curve. If you would like to find an average of all 4 runs, then you can just create a quadratic fit of all the points from the 4 data sets - that is the proper way to do it. However, if after plotting the 4 curves they look very similar, you can use any of the 4 individual fits. The PI (Proportional Integral) controller on the ESC will compensate for minor deviations.

                                          The error you saw with params not being valid was due to the latest version of voxl-esc tools using new parameter structure. So the solution is (which is what you already figured out) to update the firmware and params to latest. This type of change does not happen too often. We will add this to documentation to make this clear.

                                          Alex

                                          1 Reply Last reply Reply Quote 0
                                          • First post
                                            Last post
                                          Powered by NodeBB | Contributors