one character lag with pyboard over usb serial

Roland Smith rsmith at
Sun Oct 1 09:36:56 UTC 2017

Since last week I've been playing with my new pyboard

It is basically a microcontroller board running python 3 as its operating
system. When you plug this in to a computer using USB, it presents itself as
both a mass storage device and a modem.

Output from dmesg for this device:

    ugen2.2: <MicroPython Pyboard Virtual Comm Port in FS Mode> at usbus2
    umass0 on uhub2
    umass0: <MicroPython Pyboard Virtual Comm Port in FS Mode, class 239/2, rev 2.00/2.00,
    addr 2> on usbus2
    umass0:  SCSI over Bulk-Only; quirks = 0x0100
    umass0:3:0: Attached to scbus3
    umodem0 on uhub2
    umodem0: <MicroPython Pyboard Virtual Comm Port in FS Mode, class 239/2, rev 2.00/2.00,
    addr 2> on usbus2
    umodem0: data interface 2, has no CM over data, has no break

Using a program like picocom, you can connect to the modem which presents a
Python Read Eval Print Loop (“REPL”). The REPL works but has one very annoying

It seems to have a one-character lag. The first character I type on a
line is not directly shown but creates a new line. Only after I type the
second character does the first character becomes visible. Also, any return text
from the board longer than a couple of lines seems to stop halfway, and I have
to type return for it to continue.

I'm using FreeBSD 11.1-STABLE r321626 amd64 with a GENERIC kernel.

This is what I see hen I connect to the board with picocom:

    > ./picocom  -b 115200 /dev/cuaU0
    picocom v2.2

        port is        : /dev/cuaU0
        flowcontrol    : none
        baudrate is    : 115200
        parity is      : none
        databits are   : 8
        stopbits are   : 1
        escape is      : C-a
        local echo is  : no
        noinit is      : no
        noreset is     : no
        nolock is      : no
        send_cmd is    : sz -vv
        receive_cmd is : rz -vv -E
        imap is        : 
        omap is        : 
        emap is        : crcrlf,delbs,

        Type [C-a] [C-h] to see available commands

        Terminal ready
        .2 on 2017-08-23; PYBv1.1 with STM32F405RG
        Type "help()" for more information.

After this, I have to tap the <enter> key to get the familiar Python prompt (“>>>”) to
appear. However, when I e.g. type “help()”, this happens:

    >>> help(

The first key <h> creates a new line. The second key <e> makes the “h”
visible. And so on. After typing <)>, typing <enter> makes the last “)”
visible and produces output.

I also tried using “screen”, but that produced the same results as picocom.

The stty output for the port is:

    # stty -af /dev/cuaU0
    speed 115200 baud; 0 rows; 0 columns;
    lflags: -icanon -isig -iexten -echo -echoe -echok echoke -echonl echoctl
        -echoprt -altwerase -noflsh -tostop -flusho -pendin -nokerninfo
    iflags: -istrip -icrnl -inlcr -igncr -ixon -ixoff -ixany -imaxbel ignbrk
        -brkint -inpck -ignpar -parmrk
    oflags: -opost onlcr -ocrnl tab0 -onocr -onlret
    cflags: cread cs8 -parenb -parodd hupcl clocal -cstopb -crtscts -dsrflow
        -dtrflow -mdmbuf
    cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
        eol2 = <undef>; erase = ^?; erase2 = ^H; intr = ^C; kill = ^U;
        lnext = ^V; min = 1; quit = ^\; reprint = ^R; start = ^Q;
        status = ^T; stop = ^S; susp = ^Z; time = 0; werase = ^W;

I've asked around on the pyboard forum, but nobody there (using Linux or OSX)
has seen this problem. It has been suggested that this is a FreeBSD driver

Can anyone suggest a fix for this issue?

[plain text email much appreciated]

More information about the freebsd-questions mailing list