• 【逗老师的无线电】Debian Linux手工编译安装MMDVM


    看我干了啥,在Vmware里面装了一个Debian Linux并且运行了MMDVMHost,来支持业余无线电通联
    在这里插入图片描述

    开始之前先举个手,有多少朋友能分清MMDVM和Pi-Star关系的?
    在这里插入图片描述

    MMDVM、Pi-Star和树莓派的关系

    咱们先科普一下这个小知识点。各位HAM们应该总是把【Pi-Star】、【MMDVM】和【树莓派】这几个名词连在一起一起说,那么者三个东西的关系,尤其是【Pi-Star】、【树莓派】的关系是什么呢,各位HAM老哥们可能有90%以上的都傻傻分不清楚。
    先说一下这三者的关系

    • MMDVM–软件、应用程序
    • Pi-Star–操作系统
    • 树莓派–硬件,计算机

    举个例子,这三者的关系,基本就是Photoshop->Windows->戴尔,这三家的关系

    MMDVM是英国HAM G4KLX发起的一个项目,后来经过一次转手,但是目前依然是最热门的数字无线电通信软件。注意,这玩意是个软件。同时MMDVM不光可以运行在Pi-Star操作系统中,也可以运行在Ubuntu和其他Linux,甚至是Windows里。
    参见这篇帖子,就是在Windows下安装MMDVM进行无线通联。
    【逗老师的无线电】宝峰神机刷OpenGD77摇身变为DMR大热点

    Pi-Star是MW0MWZ前辈(是个英国佬)开发的一个集成操作系统,哥们最牛逼的地方,就是在这个系统里面集成了MMDVM。这就好比,你想装个Auto CAD到你电脑里面,但是不会装。这时候有个大神过来直接给你一个windows镜像,Windows会装吧,装完我这个Windows,里面直接就有CAD,你说爽不爽。
    Pi-Star的镜像基于树莓派的官方镜像进行二次开发,同样也是Debin Linux的一个分支。所以,很多基于树莓派的官方操作系统的功能,都可以尝试在Pi-Star上进行安装。

    树莓派RaspberryPi是一群英国佬(没错,还是英国佬)2012年3月,英国剑桥大学的埃本·阿普顿正式发售了当时世界上最小的ARM计算机,就是后来的树莓派。最初,树莓派是为学习计算机编程教育而设计,官方操作系统基于Linux。后来随着Windows 10 IoT的发布,用户可以用上运行Windows的树莓派。所以你没看错,这玩意也能跑Windows。
    在这里插入图片描述
    所以,当你想实现一个功能,其实可以倒推,需要什么软件,需要什么操作系统,需要什么硬件。这三者凑在一起,就构成了【解决方案】这个听起来很高大上的东西。
    目前,大家之所以把MMDVM、Pi-Star和树莓派三个东西混在一起,是因为这套解决方案学习成本低,硬件成本适中,用户基数大,普及程度广,自带Web管理界面。所以大家不深究的话,容易把他们混成一谈。
    但是要记住:

    • MMDVM不光能跑在Pi-Star上,也能跑在Windows及其他平台上
    • MMDVM不一定非要用树莓派,也可以跑在OpenWrt操作系统上进而套用其他硬件平台。
    • 树莓派不光能当热点盒子,这玩意玩法可多了,比如还能做NAS。

    x86架构Debian Linux安装MMDVMHost

    坐好了,现在要开始整骚活了。这次我们的目标是

    • 在x86架构的计算机上
    • 安装Debian Linux
    • 编译并安装MMDVM

    这样你就拥有了一台永不关机的云端MMDVM服务器。至于这样做为了啥,请配合这篇文章一起服用,效果更佳:
    【逗老师的无线电】BI1FQO教你整骚活,纯4G MMDVM热点版
    在这里插入图片描述

    一、安装操作系统

    CentOS,Ubuntu等Linux发行版都可以,本文以Debian Linux 12作为示例。
    先自行安装操作系统,没啥特殊要求,能开机能联网就行。

    二、项目资源列表

    感谢HAM圈的各位大神们的项目,小白不需要点进去一个一个的看,只需要记住,这些大佬们的名字即可
    G4KLX、BI7JTA、BG7NYT

    G4KLX前辈的MMDVMHost项目地址:
    https://github.com/g4klx/MMDVM

    CA6JAU前辈的MMDVM_HS项目(基本国内的热点版都是CA6JAU的开源代码)
    https://github.com/juribeparada/MMDVM_HS

    BI7JTA前辈的项目地址:
    https://github.com/bi7jta/MMDVM-Install_RPT_N4IRS
    https://www.bi7jta.org/

    BG7NYT-第一个在知乎写了如何手工编译MMDVM教程的大佬
    https://www.zhihu.com/tardis/bd/art/144813660

    以上,感谢前辈们的工作。
    本文大部分基于BI7JTA老师的项目,并更正了由于G4KLX更新MMDVMHost导致的安装脚本发生的一些变化。

    三、安装

    1、安装依赖环境

    https://github.com/bi7jta/MMDVM-Install_RPT_N4IRS/tree/master/scripts
    参考BI7JTA前辈的脚本,把所有的依赖环境挨个装一下。
    或者直接复制粘贴下面的代码,无脑干就完了

    # 先sudo -s一下
    
    #scripts/build-tools.sh
    apt-get install g++ -y
    apt-get install make -y
    apt-get install build-essential -y
    apt-get install git -y
    
    #scripts/install-mono.sh
    apt-get update
    apt-get upgrade
    apt-get install git dirmngr
    apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
    echo "deb http://download.mono-project.com/repo/debian stretch main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
    apt-get update
    apt-get install mono-complete mono-devel
    
    #scripts/required-libs.sh
    apt-get install libusb-dev -y
    apt-get install libnewt-dev -y
    apt-get install libeditline0 -y
    apt-get install libncurses5-dev -y
    
    apt-get install bison -y
    apt-get install libssl-dev -y
    apt-get install libasound2-dev -y
    apt-get install libcurl4-gnutls-dev -y
    apt-get install php5-cli -y
    apt-get install libiksemel-dev -y
    apt-get install libvorbis-dev -y
    apt-get install curl -y
    
    # Nice to have utilities and tools
    # is sox required or nice to have
    apt-get install sox -y
    apt-get install usbutils -y
    apt-get install alsa-utils -y
    apt-get install bc -y
    apt-get install dnsutils -y
    
    #编译新版本的MMDVMHost需要安装samplerate库
    apt-get install libsamplerate0-dev
    
    #编译ircDDBGateway依赖
    sudo apt install libwxgtk3.2-dev
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    注BI7JTA Git中忽略的一个依赖,编译新版本的MMDVMHost需要安装samplerate库,参考case:
    https://github.com/g4klx/MMDVMHost/issues/783

    2、编译安装

    推荐先下载BI7JTA老师的原项目文件

    cd ~
    git clone https://github.com/bi7jta/MMDVM-Install_RPT_N4IRS.git
    
    • 1
    • 2

    MMDVM-System-Builder/MMDVM-System-Builder.sh

    2.1、编译环境准备

    # Install needed programs
    # This could be pruned
    #
    apt-get update -y
    apt-get install git-core -y
    apt-get install curl -y
    apt-get install g++ -y
    apt-get install make -y
    
    # For MMDVM firmware
    # apt-get install python-pip -y # Where is this used?
    apt-get install gdb-arm-none-eabi -y
    apt-get install libusb-1.0 -y
    
    # For Armbian Need to check this !
    # apt-get install libstdc++-arm-none-eabi-newlib -y
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    2.2、必要文件复制

    cd ~
    git clone https://github.com/bi7jta/MMDVM-Install_RPT_N4IRS.git
    sudo cp -rf ~/MMDVM-Install_RPT_N4IRS/MMDVM-System-Builder/Directories/etc/* /etc
    sudo cp -rf ~/MMDVM-Install_RPT_N4IRS/MMDVM-System-Builder/Directories/lib/* /lib
    sudo cp -rf ~/MMDVM-Install_RPT_N4IRS/MMDVM-System-Builder/Directories/opt/* /opt
    sudo cp -rf ~/MMDVM-Install_RPT_N4IRS/MMDVM-System-Builder/Directories/srv/* /srv
    sudo cp -rf ~/MMDVM-Install_RPT_N4IRS/MMDVM-System-Builder/Directories/usr/* /usr
    sudo cp -rf ~/MMDVM-Install_RPT_N4IRS/MMDVM-System-Builder/Directories/var/* /var
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2.3、下载所有依赖项目

    cd /srv/Repositories/CA6JAU
    git clone https://github.com/juribeparada/MMDVM_CM.git
    git clone https://github.com/juribeparada/MMDVM_HS.git
    
    cd /srv/Repositories/DG9VH
    git clone https://github.com/dg9vh/MMDVMHost-Dashboard.git
    
    ## cd /srv/Repositories/DVSwitch
    
    cd /srv/Repositories/G4KLX
    git clone https://github.com/g4klx/DMRGateway.git
    git clone https://github.com/g4klx/P25Clients.git
    git clone https://github.com/g4klx/YSFClients.git
    git clone https://github.com/g4klx/NXDNClients.git
    git clone https://github.com/g4klx/MMDVMHost.git
    git clone https://github.com/g4klx/MMDVMCal.git
    git clone https://github.com/g4klx/MMDVM.git
    
    cd /srv/Repositories/stm32flash
    git clone https://git.code.sf.net/p/stm32flash/code stm32flash
    
    cd /srv/Repositories/N4IRS
    git clone https://github.com/N4IRS/MMDVMVersion.git
    
    # cd /srv/Repositories/OpenDV
    # Nothing here
    
    # Copy the source directories to /usr/src
    # This allows me to keep a pristine copy in /srv/Repositories
    
    cd /srv/Repositories/CA6JAU/MMDVM_CM
    cp -rf DMR2NXDN DMR2YSF NXDN2DMR YSF2DMR YSF2NXDN YSF2P25 /usr/src
    
    cd /srv/Repositories/CA6JAU/
    cp -rf MMDVM_HS /usr/src
    
    cd /srv/Repositories/DG9VH
    cp -R MMDVMHost-Dashboard/* /var/www/html/
    
    # cd /srv/Repositories/DVSwitch
    # Nothing here
    
    cd /srv/Repositories/G4KLX
    cp -rf DMRGateway MMDVM MMDVMCal MMDVMHost /usr/src
    
    cd /srv/Repositories/G4KLX/NXDNClients
    cp -rf NXDNGateway NXDNParrot /usr/src
    
    cd /srv/Repositories/G4KLX/P25Clients
    cp -rf P25Gateway P25Parrot /usr/src
    
    cd /srv/Repositories/G4KLX/YSFClients
    cp -rf YSFGateway YSFParrot /usr/src
    
    cd /srv/Repositories/stm32flash
    cp -rf stm32flash /usr/src
    
    cd /srv/Repositories/N4IRS
    cp -rf MMDVMVersion /usr/src
    
    ## Build the programs from source
    ## Yes, this is brute force
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63

    2.4、开始编译

    本步建议一段一段的复制,看看哪里报错,哪里编译失败,再具体分析

    cd /usr/src/DMR2NXDN
    make clean
    make
    cp DMR2NXDN /opt/DMR2NXDN
    
    cd /usr/src/DMR2YSF
    make clean
    make
    cp DMR2YSF /opt/DMR2YSF
    
    cd /usr/src/DMRGateway
    make clean
    make
    cp DMRGateway /opt/DMRGateway
    
    cd /usr/src/MMDVMCal
    make clean
    make
    cp MMDVMCal /opt/MMDVMCal
    
    cd /usr/src/MMDVMHost
    make clean
    make
    cp MMDVMHost /opt/MMDVMHost
    
    cd /usr/src/NXDN2DMR
    make clean
    make
    cp NXDN2DMR /opt/NXDN2DMR
    
    cd /usr/src/NXDNGateway
    make clean
    make
    cp NXDNGateway /opt/NXDNGateway
    
    cd /usr/src/NXDNParrot
    make clean
    make
    cp NXDNParrot /opt/NXDNParrot
    
    cd /usr/src/P25Gateway
    make clean
    make
    cp P25Gateway /opt/P25Gateway
    
    cd /usr/src/P25Parrot
    make clean
    make
    cp P25Parrot /opt/P25Parrot
    
    cd /usr/src/YSF2DMR
    make clean
    make
    cp YSF2DMR /opt/YSF2DMR
    
    cd /usr/src/YSF2NXDN
    make clean
    make
    cp YSF2NXDN /opt/YSF2NXDN
    
    cd /usr/src/YSF2P25
    make clean
    make
    cp YSF2P25 /opt/YSF2P25
    
    cd /usr/src/YSFGateway
    make clean
    make
    cp YSFGateway /opt/YSFGateway
    
    cd /usr/src/YSFParrot
    make clean
    make
    cp YSFParrot /opt/YSFParrot
    
    cd /usr/src/stm32flash
    make clean
    make
    cp stm32flash /usr/local/sbin
    
    cd /usr/src/MMDVMVersion
    make clean
    make
    cp MMDVMVersion /opt/MMDVMVersion
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85

    2.5、添加服务开机启动、启用定时任务

    # Enable the systemd unit files
    #
    systemctl enable nxdngateway.service
    systemctl enable nxdnparrot.service
    systemctl enable p25gateway.service
    systemctl enable p25parrot.service
    systemctl enable ysf2dmr.service
    systemctl enable ysf2nxdn.service
    systemctl enable ysf2p25.service
    systemctl enable ysfgateway.service
    systemctl enable ysfparrot.service
    systemctl enable mmdvmhost.service
    systemctl enable netcheck.service
    
    # Populate the datafiles
    #
    /etc/cron.daily/DMRIDUpdateBM
    /etc/cron.daily/FCSRoomsupdate
    /etc/cron.daily/NXDNHostsupdate
    /etc/cron.daily/NXDNIDUpdate
    /etc/cron.daily/P25Hostsupdate
    /etc/cron.daily/TGList-DMR_update
    /etc/cron.daily/TGList-NXDN_update
    /etc/cron.daily/TGList-P25_update
    /etc/cron.daily/XLXHostsupdate
    /etc/cron.daily/YSFHostsupdate
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    2.6、可选安装Dashboard

    # Install the dashboard
    #
    apt-get install lighttpd -y
    
    # Need to add test for Stretch vs Jessie
    # apt-get install php7.0-common -y
    # apt-get install php -y
    apt-get install php7.0-cgi -y
    
    chown -R www-data:www-data /var/www/html
    chmod -R 775 /var/www/html
    
    lighty-enable-mod fastcgi
    lighty-enable-mod fastcgi-php
    
    mv /var/www/html/index.lighttpd.html /var/www/html/index.lighttpd.html.old
    
    systemctl restart lighttpd
    
    # Add DVSwitch programs via apt-get install
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    2.7、可选安装ircDDBGateway

    cd /srv/Repositories/G4KLX
    git clone https://github.com/g4klx/ircDDBGateway.git
    cd ircDDBGateway
    make clean
    make 
    make install
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.8、启动服务

    systemctl start nxdngateway.service
    systemctl start nxdnparrot.service
    systemctl start p25gateway.service
    systemctl start p25parrot.service
    systemctl start ysf2dmr.service
    systemctl start ysf2nxdn.service
    systemctl start ysf2p25.service
    systemctl start ysfgateway.service
    systemctl start ysfparrot.service
    systemctl start mmdvmhost.service
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    四、配置

    这里有一个坑。简单说一下吧
    Pi-Star封装的系统DMR部分的通信方式是MMDVMHost->DMRGateway->BM Server
    但是本文没有编译DMRGateway,需要采用MMDVMHost直连BMServer的方式。
    直连这部分的配置在MMDVM.ini中。
    G4KLX更新了代码,但是没有写文档,最主要的是,连MMDVM.ini中DMR Network的Address等字段也变更了。从Address=变成了Remote Address=。
    算了不多说了,直接粘一个线程的MMDVM.ini配置文件案例吧。

    MMDVM.ini文件路径/opt/MMDVMHost/MMDVM.ini
    我把关键配置放在前面

    [General]
    #呼号和DMRID
    Callsign=BI1FQO
    Id=4606666
    Timeout=600
    Duplex=1
    #ModeHang=10
    RFModeHang=10
    NetModeHang=10
    Display=None
    Daemon=0
    
    [Info]
    #双工上下行频率
    RXFrequency=433200000
    TXFrequency=439200000
    Power=0.5
    Latitude=40.080600
    Longitude=116.32290
    Height=0
    Location="Changping, Beijing"
    Description="China"
    URL=https://ctsdn.blog.csdn.net/
    
    [Modem]
    #Port=/dev/ttyS0
    UARTPort=/dev/ttyS0
    UARTSpeed=115200
    #配置接口需使用UARTPort和UARTSpeed字段,原Port字段无效
    # Port=\\.\COM3
    TXInvert=1
    RXInvert=0
    PTTInvert=0
    TXDelay=100
    RXOffset=0
    TXOffset=0
    DMRDelay=0
    RXLevel=50
    TXLevel=50
    RXDCOffset=0
    TXDCOffset=0
    RFLevel=100
    RSSIMappingFile=RSSI.dat
    Trace=0
    Debug=1
    
    [DMR]
    Enable=1
    Beacons=0
    BeaconInterval=60
    BeaconDuration=3
    ColorCode=8
    SelfOnly=0
    EmbeddedLCOnly=0
    DumpTAData=1
    CallHang=3
    TXHang=4
    ModeHang=20
    OVCM=0
    Id=460666651
    #填写你的DMRID+BSSID后缀
    
    [Log]
    # Logging levels, 0=No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error, 6=Fatal
    DisplayLevel=1
    FileLevel=2
    FilePath=/var/log/mmdvm
    FileRoot=MMDVM
    
    [CW Id]
    Enable=0
    Time=10
    # Callsign=
    
    [DMR Id Lookup]
    File=/var/lib/mmdvm/DMRIds.dat
    Time=24
    
    [NXDN Id Lookup]
    File=/var/lib/mmdvm/NXDN.csv
    Time=24
    
    
    
    [Transparent Data]
    Enable=0
    RemoteAddress=127.0.0.1
    RemotePort=40094
    LocalPort=40095
    
    [UMP]
    Enable=0
    # Port=\\.\COM4
    Port=/dev/ttyACM1
    
    [D-Star]
    Enable=0
    Module=B
    SelfOnly=0
    AckReply=1
    AckTime=750
    ErrorReply=1
    RemoteGateway=0
    # ModeHang=10
    
    [DMR]
    Enable=1
    Beacons=0
    BeaconInterval=60
    BeaconDuration=3
    ColorCode=8
    SelfOnly=0
    EmbeddedLCOnly=0
    DumpTAData=1
    CallHang=3
    TXHang=4
    ModeHang=20
    OVCM=0
    Id=460666651
    
    
    [DMR Network]
    Enable=1
    #Address=4601.master.brandmeister.network
    #Port=62031
    #Local=62032
    #以上三行废弃不用了
    Jitter=360
    Password="*************"
    Slot1=1
    Slot2=1
    Debug=0
    ModeHang=20
    RemoteAddress=4601.master.brandmeister.network
    RemotePort=62031
    LocalPort=62032
    Type=Direct
    #上面这四行是关键,尤其是这个Type字段
    
    
    ################################################
    #以下全是默认,需要用YSF或者P25、NXDN的同学自行修改
    
    [System Fusion]
    Enable=0
    LowDeviation=0
    SelfOnly=0
    # TXHang=4
    # DGID=1
    RemoteGateway=0
    # ModeHang=10
    
    [P25]
    Enable=0
    NAC=293
    SelfOnly=0
    OverrideUIDCheck=0
    RemoteGateway=0
    # ModeHang=10
    
    [NXDN]
    Enable=0
    RAN=1
    SelfOnly=0
    RemoteGateway=0
    # ModeHang=10
    
    [D-Star Network]
    Enable=0
    GatewayAddress=127.0.0.1
    GatewayPort=20010
    LocalPort=20011
    # ModeHang=3
    Debug=0
    
    
    
    
    [System Fusion Network]
    Enable=0
    LocalAddress=127.0.0.1
    LocalPort=3200
    GatewayAddress=127.0.0.1
    GatewayPort=4200
    # ModeHang=3
    Debug=0
    
    [P25 Network]
    Enable=0
    GatewayAddress=127.0.0.1
    GatewayPort=42020
    LocalPort=32010
    # ModeHang=3
    Debug=0
    
    [NXDN Network]
    Enable=0
    LocalAddress=127.0.0.1
    LocalPort=14021
    GatewayAddress=127.0.0.1
    GatewayPort=14020
    # ModeHang=3
    Debug=0
    
    [TFT Serial]
    # Port=modem
    Port=/dev/ttyAMA0
    Brightness=50
    
    [HD44780]
    Rows=2
    Columns=16
    
    # For basic HD44780 displays (4-bit connection)
    # rs, strb, d0, d1, d2, d3
    Pins=11,10,0,1,2,3
    
    # Device address for I2C
    I2CAddress=0x20
    
    # PWM backlight
    PWM=0
    PWMPin=21
    PWMBright=100
    PWMDim=16
    
    DisplayClock=1
    UTC=0
    
    [Nextion]
    # Port=modem
    Port=/dev/ttyAMA0
    Brightness=50
    DisplayClock=1
    UTC=0
    #Screen Layout: 0=G4KLX 2=ON7LDS
    ScreenLayout=2
    IdleBrightness=20
    
    [OLED]
    Type=3
    Brightness=0
    Invert=0
    Scroll=1
    
    [LCDproc]
    Address=localhost
    Port=13666
    #LocalPort=13667
    DimOnIdle=0
    DisplayClock=1
    UTC=0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231
    • 232
    • 233
    • 234
    • 235
    • 236
    • 237
    • 238
    • 239
    • 240
    • 241
    • 242
    • 243
    • 244
    • 245
    • 246
    • 247
    • 248
    • 249
    • 250
    • 251
    • 252

    五、测试

    修改完配置文件后

    systemctl restart mmdvmhost.service
    
    • 1

    然后观察日志,注意把日志文件的文件名修改成当天的日期哈

    tail -100f /var/log/mmdvm/MMDVM-2023-11-06.log
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

    六、虚拟串口

    多说两句虚拟串口的事情吧。
    这个事情比较有意思,刚开始用了socat生成了一个虚拟串口,但是,但是,但是
    MMDVMHost不认PTY串口,啊擦。

    1、Vmware虚拟机虚拟串口

    通过vmware添加的虚拟串口,在虚拟机中识别为ttyS0,MMDVM可用。

    在这里插入图片描述
    但是效果不好,没深究,初步(猜测)感觉是vmware的虚拟串口buffer区容量比较大,报文打满buffer才转发,且没法调节。
    所以闲置时经常出现2s内心跳报文超时的情况,以致MMDVMHost重启。
    在这里插入图片描述

    2、优化vMware虚拟机套中套

    优化后的办法,vmware打环虚拟机的ttyS0和ttyS1两个串口。
    MMDVMHost使用ttyS0,ser2net或者socat将ttyS1通过TCP-Server进行透传。
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    搞定

    这里是BI1FQO,DMR ID:4606666,希望各位HAM通联愉快!

  • 相关阅读:
    第2-1-1章 FastDFS分布式文件服务背景及系统架构介绍
    21 Linux 自带的LED驱动
    比较器? 如何使用比较器? 如何自定义比较器?
    为了学明白中断机制,我努力了
    k8s 中的 ingress 使用细节
    在英特尔 CPU 上微调 Stable Diffusion 模型
    定时任务实现方案总结
    『Material Design』CollapsingToolbarLayout可折叠标题栏
    java毕业设计物资租赁管理系统mybatis+源码+调试部署+系统+数据库+lw
    人工神经网络的基本模型,人工神经网络数学模型
  • 原文地址:https://blog.csdn.net/ytlzq0228/article/details/134255162