Я не считаю это практическим решением, но это забавное решение. Зачем имитировать нуль-модем, если можно имитировать настоящий модем. minimodem доступен в виде пакета в некоторых дистрибутивах и преобразует данные в звуковые сигналы модема, и наоборот. Чтобы попробовать, просто послушайте этот звук со скоростью 10 бод и громкостью 0,1:
$ echo 'the quick brown fox' | minimodem -v 0.1 --tx 10
Это займет около 20 секунд. Если вы направите вывод в файл, он будет мгновенным, но затем вы можете воспроизвести файл с помощью sox
, и тоны будут интерпретированы обратно в данные:
$ echo 'the quick brown fox' | minimodem -v 0.1 --tx 10 -f out.wav
$ file out.wav
out.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 48000 Hz
$ sox out.wav -t wav - | minimodem -f - --rx 10
### CARRIER 10.00 @ 1590.0 Hz ###
the quick brown fox
### NOCARRIER ndata=20 confidence=33.775 ampl=0.064 bps=10.00 (rate perfect) ###
Это все еще происходит мгновенно, но показывает, что это работает.
Чтобы воспроизводить тоны в файле wav с нужной скоростью, его необходимо воспроизводить через аудиоустройство. Но для этого мы можем использовать программные устройства с обратной связью:
$ sudo modprobe snd-aloop
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC662 rev1 Analog [ALC662 rev1 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]
Subdevices: 7/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 1: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
Теперь у нас есть 8 устройств обратной петли (у модуля есть параметр, чтобы запросить больше). Например, теперь мы можем воспроизводить звук на карте 1, устройстве 1, подустройстве 2 и слушать его на карте 1, устройстве 0, подустройстве 2. Для воспроизведения требуется 20 секунд:
$ sox out.wav -t alsa hw:1,1,2
out.wav:
File Size: 1.96M Bit Rate: 768k
Encoding: Signed PCM
Channels: 1 @ 16-bit
Samplerate: 48000Hz
Replaygain: off
Duration: 00:00:20.40
In:47.7% 00:00:09.73 [00:00:10.67] Out:467k [ -=|=- ] Clip:0
Слушать:
$ sox -q -t alsa hw:1,0,2 -t wav -c 1 - | minimodem --rx 10 -f -
### CARRIER 10.00 @ 1590.0 Hz ###
the quick brown fox
### NOCARRIER ndata=21 confidence=10.265 ampl=0.060 bps=10.00 (rate perfect) ###
Персонажи появляются один за другим через 20 секунд.
person
meuh
schedule
25.02.2021
man throttle
. Вы можете использовать socat для запуска этого, подключая каждый конец к другому pty (но я не думаю, что это даст вам двунаправленный трафик) - person Ben Voigt   schedule 25.02.2021-b
вариант. - person Ben Voigt   schedule 25.02.2021bit
в списке разрешенных суффиксов дляtc
- person Ben Voigt   schedule 25.02.2021