Можно сказать, что модемы перешли в разряд ретротехнологий. Но чтобы поработать с ними сегодня, необязательно приобретать физический девайс. Для установки соединения по аудиоканалу достаточно звуковой карты и open source утилиты minimodem.

Фотография: Akshar Dave. Источник: Unsplash.com
Фотография: Akshar Dave. Источник: Unsplash.com

Что за minimodem

Старым компьютерам не хватало вычислительных мощностей, чтобы параллельно выполнять задачи цифровой обработки данных, модуляции и демодуляции, кодирования — их решал процессор модема. С развитием технологий появились так называемые софт-модемы (или винмодемы), которые отвечали только за DSP, модуляцию и демодуляцию передавали драйверу операционной системы. Современным машинам для установления такого рода соединения достаточно звуковой карты и специального ПО.

Пример такого программного обеспечения — minimodem. Он генерирует и декодирует стандартные FSK-последовательности, в том числе Bell103, Caller-ID, NOAA SAME, RTTY и даже TTY/TDD. Последний протокол применялся в устройствах обмена сообщениями по телефонной линии — их использовали люди с нарушением уха или речи.

Minimodem позволяет настроить канал передачи данных между двумя вычислительными системами. Он умеет работать как с предварительно записанными аудиосигналами, так и в формате прямого подключения через звуковой порт. Посмотреть, как это работает, можно на YouTube — автор выложил деморолик. Но если вы в наушниках, рекомендуем убавить громкость, так как тональные сигналы на видео достаточно заметные.

Кстати, если вы хотите поближе изучить звук старых модемов, для эти целей один энтузиаст собрал «библиотеку» рукопожатий. В его коллекции есть модемы от TI и Motorola с самой короткой DIL-последовательностью.

Что касается настройки minimodem, то все инструкции можно найти на официальном сайте. Что интересно, minimodem можно запустить под Windows через Cygwin — список необходимых зависимостей опубликован в репозитории на GitHub.

Кто еще использует звук для передачи данных

Есть и другие программы, позволяющие передавать данные между компьютерами с помощью звука. Например, небольшой домашний проект британского инженера — AudioTransmit. Утилита кодирует бинарные данные в аудиозапись и транслирует её другому компьютеру через динамик, в свою очередь, приемник считывает её с помощью микрофона и декодирует.

Фотография: Akshar Dave. Источник: Unsplash.com
Фотография: Akshar Dave. Источник: Unsplash.com

Пока что проект поддерживает лишь одностороннюю передачу — это означает, что за пересылку и прием данных отвечают две разные программы. Но в качестве эксперимента их можно запустить на одном компьютере.

Другой похожий проект называется wave-share. Утилита позволяет установить связь между двумя браузерами по протоколу WebRTC с помощью звука. Работу утилиты можно оценить на практике в этом демо.

Разумеется, применимость таких технологий достаточно ограничена — на них как минимум влияют помехи и качество передаваемого сигнала. Но в первую очередь они интересны с образовательной точки зрения, так как позволяют лучше понять принципы работы технологий прошлых лет.


Что еще почитать в нашем «Мире Hi-Fi»:


Комментарии (28)


  1. kAIST
    16.04.2022 23:04

    Что то не понял, зачем с помощью звука слать данные по WebRTC, если оно поддерживает просто обмен данными?


    1. victor_1212
      17.04.2022 00:42

      вероятно с функциональной точки зрения это бессмысленно, но minimodem отношения к WebRTC не имеет, это отдельная игрушка для аналоговой связи pc например по audio кабелю, остальное типа интерпретация переводчика

      см.

      http://www.whence.com/minimodem/

      "Minimodem can play and capture audio modem tones in real-time via the system audio device, or in batched mode via audio files"


  1. aik
    16.04.2022 23:08
    +1

    А когда-то признаком крутости считалось уметь свистеть на 300 бод…


    1. DrPass
      17.04.2022 02:01
      +5

      У меня кот умел шипеть на 14400


      1. aik
        17.04.2022 07:56

        А принимать переданные котом файлы можно было?


        1. DrPass
          17.04.2022 13:58
          +2

          Там они достаточно однообразные были. Текстовочка «хочу жрать» и «хочу на улицу».


        1. basilbasilbasil
          17.04.2022 18:21

          в лоток


          1. HardWrMan
            17.04.2022 18:35

            Лоток это для входящих. А исходящие передавать из чашки (а на большой скорости прямо с миски)?


      1. HardWrMan
        17.04.2022 08:00
        +5

        Немедленно вспоминаются анекдоты про кота по кличке ZyXEL!


        1. tormozedison
          17.04.2022 11:11
          +2

          — Зюксель, коннект!
          — Пшшшшшшшш!


        1. tormozedison
          17.04.2022 12:14

          Просто вспомнилось. В проекте «Центрального телеграфа» OpenWWW был форум, куда приходили трепаться все кому не лень. Однажды (вроде, 2003 год) пришли какие-то малолетки и создали тему о некой девчонке по кличке Таз, которую обзывали «дурой непролазной», но было видно, что они в нее влюблены, поскольку затем ту первоначальную тему забросили, а во всех остальных начали ее упоминать: Таз, Таз… Потом их забанили, но ещё пару дней смешно было.


  1. aelaa
    16.04.2022 23:29
    +1

    Полгода назад припаял к спеке 3.5 штекер, и включал записи программ с ноутбука. Принимающей стороне даже специальный софт не нужен


  1. LuchS-lynx
    17.04.2022 03:23

    Немного не понял, вот например у меня есть ретро ноутбук с dial-up модемом. Как мне подключить его к звуковой карте ПК что бы при помощи данной программы можно было наладить сеть... или хотя бы на двоих сыграть в warcraft 2 по телефону? или тут без атс обойдтись? подойдет любая аналоговая или есть примеры на малине?


  1. anonymous
    00.00.0000 00:00


    1. Jury_78
      17.04.2022 08:22
      +1

      Если в ноуте есть COM порт, то лучше через него.


    1. victor_1212
      17.04.2022 15:55
      +1

      если встроенный dial-up модем работает, для соединения ничего не требуется, dial-up линк используется для PPP (драйвер наверняка уже есть), поверх которого все обычно, это если соедингение с провайдером, но для Peer-to-Peer надо что-то типа старого DitTorrent,

      см

      http://www.sigcomm.org/sites/default/files/ccr/papers/2007/October/1290168-1290170.pdf

      описываемый minimodem это типа эмуляции dial-up модема, для использования вместо тефонной сети обычный audio кабель (pc карта <--> pc карта), по сравнению с нормальным модемом просто игрушка


      1. LuchS-lynx
        17.04.2022 19:34

        понятно... а вот такой вопрос, если взять б/у аналоговую офисную АТС получится ли законектить два ноутбука по лапше в рамках одной комнаты?


        1. lv333
          17.04.2022 21:41

          Аналоговую АТС можно заменить парой крон в этом случае. Это в смысле если использовать настоящие модемы.


        1. victor_1212
          18.04.2022 01:24

          если только два в комнате, то даже модем не требуется, на коротком расстоянии два последовательных порта могут разговаривать через кусок провода, который называют null modem (см ниже), модем вообще нужен чтобы добивать на большое расстояние, используя помехоустойчивое кодирование, АТС может пригодиться для signalling, чтобы отрабатывать с кем именно надо соединить, типа замена аналог sip используемого например для пакетного voip,

          см.

          https://en.wikipedia.org/wiki/Null_modem

          ps

          в свое время поработал с ними достаточно


          1. lv333
            18.04.2022 09:41

            Нольмодем это минимум 3 провода, а товарищ по лапшу спрашивал(тобишь 2 провода), да и компортов сейчас почти никуда не ставят в новое железо, если стационарники еще попадаются с ним, то ноуты 90+% нет, значит как минимум переходники еще нужны с юсб. RS-485 - умеет штатно по 2-м проводам, а вот RS-232 штатно точно нет.


            1. victor_1212
              18.04.2022 15:50

              > а товарищ по лапшу спрашивал

              про лапшу просто его не понял, предполагаю что товарищ достаточно грамотный, чтобы посмотреть самому такую вещь как "null modem", переходников достаточно, заметим особенности реализации последовательных портов тоже имеются, есть желание можно разобраться :)


              1. lv333
                19.04.2022 09:01

                Да если прямо так сильно хочется именно по двум проводам, то проще всего наверное USB - RS485


                1. HardWrMan
                  19.04.2022 13:46

                  Но это же полудуплекс, когда модем по тем же двум проводам обеспечивает полный дуплекс (пусть и не совсем симметричный).


  1. vanyas
    17.04.2022 09:16
    +6

    А где статья то? А то только введение с парой видосиков и все. Где расписано как как настроить minimodem для дозвона на реальный модем/модемный пул, как звуковую карту подключить к телефонной линии, просто так же нельзя же в телефонную линию воткнуть, надо уровни согласовать, а то сгорит нафиг.


    1. hssergey
      17.04.2022 20:55
      +1

      Судя по сайту этой программы - никак. Связь по протоколу V34 и выше - двухсторонняя, с тестированием линии, согласованием скоростей, коррекцией ошибок и т.д. Ничего из этого программа не умеет. Она может лишь превратить последовательность байт в звуковой сигнал и восстановить из сигнала последовательность байт. Для каких-то своих проектов пойдет, но как замена аналоговому модему - нет. А жаль. Так бы можно было подключить какого-нить провайдера IP-телефонии и поднять на хостинге классическую модемную ноду...


      1. victor_1212
        18.04.2022 01:30

        > Связь по протоколу V34 и выше - двухсторонняя, с тестированием линии, согласованием скоростей, коррекцией ошибок и т.д. Ничего из этого программа не умеет.

        именно так, есть желание напишите свою, типа для развлечения, для полного кайфа можно x.25 сверху добавить, чтобы типа все по настоящему было как у взрослых :)


        1. vit1251
          18.04.2022 14:41

          Можно взять linmodems.org там по логике должна быть софт реализация всех протоколов.


      1. BaurzhanD
        19.04.2022 00:01

        Как минимум можно прикрутить выход звуковой карты к любой LPD рации, например Baofeng UV-5R и обмениваться инфой с приятелем с таким же комплектом оборудования.