The problem here is that all the addresses are in the same network, 169.254.0.0/16.
Using such addresses is fine for one network, but doesn't work for multiple networks.
The exact reason is that when the client sends a ping, your master is supposed to respond. But where should the response go? The address is in the range 169.254.0.0/16, but there are two ...
OTG does not work on most Pi models due to hardware restrictions.
To enable OTG on the Pi Zero, see Andrew Mulholland's blog post Raspberry Pi Zero – Programming over USB!, and the linked guide.
(To summarize: add dtoverlay=dwc2 to /boot/config.txt, and load the dwc2 and g_midi modules.)
The culprit turned out to be the mini OTG adapter: It is cute, but it doesn't work with the hard drive. Switching to a regular OTG cable made the drive appear.
Following is a diff of the boot messages when using the mini OTG adapter and the OTG cable. The message timestamps have been removed to produce a clean diff. Someone more familiar with Pi hardware ...
Yes, it resolves it.
“While Raspberry Pi 3 Model B+ added Gigabit Ethernet connectivity, throughput on Raspberry Pi 4 is free from the single shared USB 2.0 channel to the SoC.” (https://www.raspberrypi.org/magpi/raspberry-pi-4-specs-benchmarks/)
The assumption that the pi-zero can boot from USB seems wrong. I can't find back the source that gave this idea. It might still be possible with some tricks (custom bootcode.bin on an sd and remove that after the boot process of the cd is finished) but it will all be to complex to build. So I decided to find another way to create a proper air-gapped key ...
You analysis shows that the PI is fast enough to transmit and receive the data.
The only conclusion left is that whatever you do in MATLAB is too slow. While the PI is not bad, it is no match for a somewhat recent PC.
So you may want to write the control program in a more efficient language, like C, or you can try to identify the parts that need the most ...
While this should only be used with a readonly view from the raspberry pi, based on these questions for dropping the filesystem cache you can "reset" the listings without remounting the drive. This also keeps everything working on the remote side as well. This isn't super reliable since you have to wait for the host to flush the data (sync on linux), the ...
In my case Ubuntu 19.04 I didn't get IP address from Raspberrypi Zero
You can fix it easy just change "USB Ethernet" settings
Automatic (DHCP) --> Link-Local Only
After that you will get a 169.254.xxx.xxx IP address.