电话线供电

没有电话交换机。直接用电话线把两个MODEM接起来(Dry line)是不工作的。

据说电话线上的电压:

  • 没有电话呼入呼出 20V
  • 有电话呼入’RING’: 20-25Hz, 50-120Vpp (也有说48V)
  • 接听状态 10V

电话交换机的作用是,制造一个’RING’信号,让MODEM振铃。MODEM会在串口上打出RING字样。

参考这个这个

                             +  | | -
      	     GREEN----------+---||||---/\/\/--+-------------RED
                            |   | |     R     |           
                            |  9 to 24V       |            
                            |                 |           
                            +---||------------+          
                                C .47uF     

             RED-----------------------------------------------GREEN

手边刚好翻出一个9V电池。用两个曲别针当电极。

并把家里墙上的电话插座拆了。搭出了下面的东西: (Dell RD02-D400)

modem

直接通信

客户端:

picocom -b 115200 /dev/tty.usbmodem2

ATX0  #忽略拨号音
ATDT123123 #随便拨一个号, ATD也行, ATD100, ATDT100都可以

(服务器)局端:

picocom -b 115200 /dev/ttyACM0

ATA #接电话, Answer

然后两只🐱就会协商,提示

CONNECT 115200

然后链路就通了,继续在picocom里打字,对端就会显示

进一步: getty

在服务器(局端)按C-a C-q退出picocom

systemctl start getty@ttyACM0.service #在/lib/systemd/system/getty\@.service 里可以看到,实际上是/sbin/agetty

这时,在客户端就出现了

login:

可以动手了。

有趣的是:

$ w
USER     TTY      FROM              LOGIN@  IDLE WHAT
scateu   ttyACM0  .....

无人值守: mgetty

由于我们没有振铃信号,无法出现RING字样。因此让它自动回复ATA来强制接听。(不是好的选择)

sudo /usr/sbin/mgetty -D -s 115200 -m '"" ATA' /dev/ttyACM0 #在客户端ATD指令之后再敲回车
tail -f /var/log/mgetty.ttyACM0

See also