Angstrom PPP over 3dr radio -- odd behaviour

I have a PPP connection between my BBB running Angstrom and my MacBook Pro, over a pair of 3DR radios (actually the Hobbyking version).

The radios work fine – I can connect screen to each end and type to each other.
PPP works – the log files don’t have any errors.
ICMP works – I can ping with no lost packets, latency of about 200ms, in both direction.
I can connect via SSH from one system to another, but it doesn’t quite work as expected: It seems to ‘lag’ by one character. That is, if I type ‘ls’ I will not see the output of ls until I type another character.

I don’t think this is a problem at one end – I can see radio link activity at both ends as soon as I type the character.

SSH via ethernet works as expected.

I welcome any ideas.

(As this is more an angstrom than a Beaglebone question, is there somewhere else I should be asking?)

Thanks,
Tom

/etc/ppp/options on the BBB:

192.168.1.20:
ttyO1
57600
mru 296
defaultroute
noaccomp
nopcomp
lock
maxfail 0
lcp-echo-interval 60
local
ipcp-restart 20

/etc/ppp/options on OS X:

192.168.1.21:192.168.1.20
tty.usbserial-AM0263ME
57600
mru 296
debug
logfile /Users/tomd/tmp/ppp.log
noaccomp
nopcomp
nocrtscts
lock
maxfail 0
lcp-echo-interval 60
local
lcp-max-configure 10000

More info: (I’ve changed the mru to 1500, which seemed to make no difference)

ifconfig on OS X:

$ ifconfig -v ppp0
ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500 index 15
eflags=2000
inet 192.168.1.21 → 192.168.1.20 netmask 0xffffff00
link rate: 57.60 Kbps

ifconfig on BBB

ppp0 Link encap:Point-to-Point Protocol
inet addr:192.168.1.20 P-t-P:192.168.1.21 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:797 errors:27 dropped:0 overruns:0 frame:0
TX packets:763 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:86678 (84.6 KiB) TX bytes:155834 (152.1 KiB)

Another data point: the Send-Q never empties, i.e. netstat always reports something like:

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 128 192.168.1.20:ssh 192.168.1.21:54447 ESTABLISHED

I appears that my problem is just flow control – I was pushing data into the radio link faster than it could be sent.

I’ll need to get CTS/RTS working on my uart.