723 lines
38 KiB
HTML
723 lines
38 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh">
|
||
<head>
|
||
<!-- 元数据 -->
|
||
<meta charset="utf-8">
|
||
<link rel="icon" href="https://2-cdn.ianxia.com/images/avatar/common.png">
|
||
|
||
<title>利用Linux小主机和SDR搭建APRS iGate | Code The World</title>
|
||
<meta name="author" content="Bigsk" />
|
||
<meta http-equiv="Cache-Control" content="no-transform" />
|
||
<meta http-equiv="Cache-Control" content="no-siteapp" />
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||
<meta name="robots" content="index,follow" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
|
||
<meta name="format-detection" content="telphone=no, email=no" />
|
||
|
||
<meta name="keywords" content="技术" />
|
||
|
||
<meta name="description" content="导言APRS网络中的设备在通过无线电发送APRS信标后,只有附近的设备才能接受到内容。而如果要接入到全球的APRS-IS网络,分享自己的实时位置。则需要附近部署APRS iGate,通俗地讲就是一个APRS的数据网关,负责接收、解码、上传附近无线电波中的APRS数据包。 而APRS常用的频率144.640MHz属于VHF段,受到建筑物遮挡的影响非常大,看似近在咫尺的网关却因为一栋大楼的遮挡无法收到">
|
||
<meta property="og:type" content="article">
|
||
<meta property="og:title" content="利用Linux小主机和SDR搭建APRS iGate">
|
||
<meta property="og:url" content="https://blog.ianxia.com/2024/11/25/%E5%88%A9%E7%94%A8Linux%E5%B0%8F%E4%B8%BB%E6%9C%BA%E5%92%8CSDR%E6%90%AD%E5%BB%BAAPRS-iGate/index.html">
|
||
<meta property="og:site_name" content="Code The World">
|
||
<meta property="og:description" content="导言APRS网络中的设备在通过无线电发送APRS信标后,只有附近的设备才能接受到内容。而如果要接入到全球的APRS-IS网络,分享自己的实时位置。则需要附近部署APRS iGate,通俗地讲就是一个APRS的数据网关,负责接收、解码、上传附近无线电波中的APRS数据包。 而APRS常用的频率144.640MHz属于VHF段,受到建筑物遮挡的影响非常大,看似近在咫尺的网关却因为一栋大楼的遮挡无法收到">
|
||
<meta property="og:locale">
|
||
<meta property="og:image" content="https://2-cdn.ianxia.com/attachments/2024/11/25/v1.1.jpg">
|
||
<meta property="og:image" content="https://2-cdn.ianxia.com/attachments/2024/11/25/v1.3.jpg">
|
||
<meta property="article:published_time" content="2024-11-25T06:36:43.000Z">
|
||
<meta property="article:modified_time" content="2024-11-25T08:04:46.430Z">
|
||
<meta property="article:author" content="Bigsk">
|
||
<meta property="article:tag" content="技术">
|
||
<meta name="twitter:card" content="summary">
|
||
<meta name="twitter:image" content="https://2-cdn.ianxia.com/attachments/2024/11/25/v1.1.jpg">
|
||
|
||
<!-- 站点验证相关 -->
|
||
|
||
|
||
|
||
|
||
|
||
<!-- 样式表文件 -->
|
||
<link rel="stylesheet" id="kratos-css" href="/css/kratosr.min.css" media="all"></script>
|
||
|
||
<link rel="stylesheet" id="darkmode-css" href="/css/kr-color-dark.min.css" media="(prefers-color-scheme: dark)"></script>
|
||
<script src="/js/kr-dark.min.js"></script>
|
||
|
||
|
||
<link rel="stylesheet" id="highlight-css" href="/css/highlight/night-eighties.min.css" media="all"></script>
|
||
|
||
<link rel="stylesheet" id="fontawe-css" href="/vendors/font-awesome@4.7.0/css/font-awesome.min.css" media="all"></script>
|
||
<link rel="stylesheet" id="nprogress-css" href="/vendors/nprogress@0.2.0/nprogress.css" media="all"></script>
|
||
|
||
|
||
|
||
<link rel="stylesheet" href="/vendors/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css"></script>
|
||
|
||
<!-- 不得不预先加载的一些JS文件 -->
|
||
<script src="/vendors/jquery@3.6.0/dist/jquery.min.js"></script>
|
||
|
||
<script src="/vendors/qrcode_js@1.0.0/qrcode.min.js"></script>
|
||
|
||
|
||
<style>
|
||
|
||
|
||
</style>
|
||
|
||
<meta name="generator" content="Hexo 6.3.0"></head>
|
||
|
||
|
||
<body class="custom-background">
|
||
<div id="kratos-wrapper">
|
||
<div id="kratos-page">
|
||
<div id="kratos-header">
|
||
<header id="kratos-desktop-topnav" class="kratos-topnav">
|
||
<div class="container">
|
||
<div class="nav-header">
|
||
<nav id="kratos-menu-wrap">
|
||
<ul id="kratos-primary-menu" class="sf-menu">
|
||
|
||
|
||
<li>
|
||
|
||
<a target="_blank" rel="noopener" href="https://www.ianxia.com">
|
||
|
||
|
||
<i class="fa fa-home"></i>
|
||
|
||
首页
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<a target="_blank" rel="noopener" href="https://demo.ianxia.com">
|
||
|
||
|
||
<i class="fa fa-bug"></i>
|
||
|
||
DEMO
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<a target="_blank" rel="noopener" href="https://adsb.ianxia.com">
|
||
|
||
|
||
<i class="fa fa-plane"></i>
|
||
|
||
ADS-B
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<a target="_blank" rel="noopener" href="https://tools.ianxia.com">
|
||
|
||
|
||
<i class="fa fa-wrench"></i>
|
||
|
||
小工具
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<a href="/">
|
||
|
||
|
||
<i class="fa fa-cubes"></i>
|
||
|
||
博客
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
<a href="/links">
|
||
|
||
|
||
<i class="fa fa-link"></i>
|
||
|
||
友情链接
|
||
</a>
|
||
|
||
</li>
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
<header id="kratos-mobile-topnav" class="kratos-topnav">
|
||
<div class="container">
|
||
<div class="color-logo"><a href="/">Code The World</a></div>
|
||
<div class="nav-toggle">
|
||
<a class="kratos-nav-toggle js-kratos-nav-toggle">
|
||
<i></i>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
</div>
|
||
<div class="kratos-start kratos-hero-2">
|
||
<!-- <div class="kratos-overlay"></div> -->
|
||
<div class="kratos-cover kratos-cover-2 text-center">
|
||
<div class="desc desc2 animate-box">
|
||
<a href="/">
|
||
<h2>Code The World</h2> <br />
|
||
<span>Codice est quasi poem a.</span>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="kratos-blog-post">
|
||
<div class="container">
|
||
<div id="main" class="row">
|
||
|
||
|
||
|
||
|
||
<section class="col-md-8">
|
||
|
||
|
||
|
||
<article itemscope itemtype="https://schema.org/Article">
|
||
|
||
<link itemprop="mainEntityOfPage" href="https://blog.ianxia.com/2024/11/25/%E5%88%A9%E7%94%A8Linux%E5%B0%8F%E4%B8%BB%E6%9C%BA%E5%92%8CSDR%E6%90%AD%E5%BB%BAAPRS-iGate/">
|
||
<div class="kratos-hentry kratos-post-inner clearfix">
|
||
<header class="kratos-entry-header">
|
||
|
||
<h1 class="kratos-entry-title text-center" itemprop="name headline">利用Linux小主机和SDR搭建APRS iGate</h1>
|
||
|
||
|
||
<ul class="kratos-post-meta text-center">
|
||
<li><time datetime="2024-11-25T06:36:43.000Z" itemprop="datePublished"><i class="fa fa-calendar"></i> 2024-11-25</time></li>
|
||
<li itemprop="author" itemscope itemtype="https://schema.org/Person">
|
||
<i class="fa fa-user"></i> 作者 <span itemprop="name">Bigsk</span>
|
||
</li>
|
||
<li>
|
||
<i class="fa fa-edit"></i>
|
||
|
||
|
||
~4.26K
|
||
|
||
字
|
||
</li>
|
||
|
||
</ul>
|
||
</header>
|
||
<div class="kratos-post-content">
|
||
|
||
<div id="expire-alert" class="alert alert-warning hidden" role="alert">
|
||
<div class="icon"><i class="fa fa-warning"></i></div>
|
||
<div class="text"><p>本文最后编辑于 <time datetime="1732521886430"></time> 前,其中的内容可能需要更新。</p></div>
|
||
</div>
|
||
|
||
|
||
|
||
<hr />
|
||
<div itemprop="articleBody"><h2 id="导言"><a href="#导言" class="headerlink" title="导言"></a>导言</h2><p>APRS网络中的设备在通过无线电发送APRS信标后,只有附近的设备才能接受到内容。<br>而如果要接入到全球的APRS-IS网络,分享自己的实时位置。<br>则需要附近部署APRS iGate,通俗地讲就是一个APRS的数据网关,负责接收、解码、上传附近无线电波中的APRS数据包。</p>
|
||
<p>而APRS常用的频率144.640MHz属于VHF段,受到建筑物遮挡的影响非常大,看似近在咫尺的网关却因为一栋大楼的遮挡无法收到你的信标。<br>所以我们要积极部署更多的iGate,才能在城市中达到更好的效果。<br>而正常的iGate设备价格常常不菲,故想到利用便宜的SDR+大量洋垃圾Linux小主机来搭建自己的iGate。</p>
|
||
<h2 id="正文"><a href="#正文" class="headerlink" title="正文"></a>正文</h2><h3 id="准备措施"><a href="#准备措施" class="headerlink" title="准备措施"></a>准备措施</h3><h4 id="一、准备硬件"><a href="#一、准备硬件" class="headerlink" title="一、准备硬件"></a>一、准备硬件</h4><p>博主测试了以下两种方案:</p>
|
||
<ol>
|
||
<li>玩客云Onecloud(30元)+ RTL2832u/FC0012 SDR(60元)</li>
|
||
<li>树莓派1B(60元)+ RTL2832u/FC0012 SDR(60元)</li>
|
||
</ol>
|
||
<p>此处更推荐使用玩客云,成本更低,运行稳定,性能更高,缺点是需要一定的动手能力来刷写系统。<br>因树莓派刷写系统过于简单,本文不做介绍,只对Onecloud的刷写系统步骤做教程。</p>
|
||
<p>其中SDR目前有以下几种架构方案:</p>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>调谐芯片厂家型号</th>
|
||
<th>频率范围</th>
|
||
<th>备注</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody><tr>
|
||
<td>Elonic E4000</td>
|
||
<td>52-2200MHz</td>
|
||
<td>已停产</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Rafael Micro R820T2</td>
|
||
<td>24-1766MHz</td>
|
||
<td>已停产,常见为蓝色电视棒</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Refeal Micro R828D</td>
|
||
<td>24-1766MHz</td>
|
||
<td>与R820T2同构,常见为RTL-SDR Blog V4</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Refeal Micro R860</td>
|
||
<td>24-1766MHz</td>
|
||
<td>与R828D同构</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Fitipower FC0013</td>
|
||
<td>22-1100MHz</td>
|
||
<td></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Fitipower FC0012</td>
|
||
<td>22-948.6MHz</td>
|
||
<td>便宜,常见为黑色电视棒<br/>很多奸商当820T2卖</td>
|
||
</tr>
|
||
<tr>
|
||
<td>FlipChip International FC 2580</td>
|
||
<td>146-308MHz</td>
|
||
<td></td>
|
||
</tr>
|
||
</tbody></table>
|
||
<p>对于搭建APRS iGate,推荐购买Fitipower FC0012调谐器的SDR,成本会更低廉。<br>如要购买其他方案,请注意留意对应的频率范围,必须包含当地的APRS频率到工作频率范围内。</p>
|
||
<p>天线可以自信选购,注意对应波段的增益性能,增益越高效果越好。<br>比较廉价的固定天线方案是吸盘+HH-509F车载玻璃钢,顶配配置Diamond X510。<br>而使用手台天线,可以考虑RH770拉杆天线,V段增益也来到了3dBi,相当不错。<br>注意,大部分SDR使用的天线接口为MCX(例如电视棒),可能需要购买MCX-SMA或MCX-UHF的转接头/转接馈线。</p>
|
||
<h4 id="二、安装系统"><a href="#二、安装系统" class="headerlink" title="二、安装系统"></a>二、安装系统</h4><p>准备一把镊子,一条USB公对公或TypeC对TypeA的数据线(前提是你的电脑有C口,没错,C口接电脑)</p>
|
||
<p>下载好以下文件资料:</p>
|
||
<ol>
|
||
<li>Armbian镜像 <a target="_blank" rel="noopener" href="https://github.com/muzihuaner/armbian-onecloud/releases">GitHub下载</a></li>
|
||
<li>Amlogic USB Burning Tool <a target="_blank" rel="noopener" href="https://androidmtk.com/download-amlogic-usb-burning-tool">下载</a></li>
|
||
</ol>
|
||
<p>打开刷写工具,选择下载好的Armbian镜像,我这里下载的镜像是:Armbian-unofficial_24.5.0-trunk_Onecloud_jammy_current_6.6.21_minimal.burn。<br>给玩客云断电,拆开外壳,将USB一头连接到电脑,一头连接到远离网口的USB口,利用镊子短接对应的触电,插电开机。<br>直到听到电脑响起有设备接入的提示音后放开镊子,点击软件的开始刷写,然后等待完成,断开USB线,断电重启即可。</p>
|
||
<p>短接要求:</p>
|
||
<p>V1.1:<br><img src="https://2-cdn.ianxia.com/attachments/2024/11/25/v1.1.jpg" alt="V1.1"></p>
|
||
<p>V1.3:<br><img src="https://2-cdn.ianxia.com/attachments/2024/11/25/v1.3.jpg" alt="V1.3"></p>
|
||
<h4 id="三、安装软件"><a href="#三、安装软件" class="headerlink" title="三、安装软件"></a>三、安装软件</h4><p>SSH链接主机,请使用ROOT用户进行以下的操作。</p>
|
||
<ol>
|
||
<li>安装基础环境:</li>
|
||
</ol>
|
||
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"># 更新软件包</span><br><span class="line">apt update</span><br><span class="line"># 安装软件</span><br><span class="line">apt install git build-essential cmake automake libasound2-dev libudev-dev alsa-utils -y</span><br></pre></td></tr></table></figure>
|
||
|
||
<ol start="2">
|
||
<li>安装RTL-SDR软件:</li>
|
||
</ol>
|
||
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">apt install libusb-1.0-0-dev rtl-sdr -y</span><br></pre></td></tr></table></figure>
|
||
|
||
<ol start="3">
|
||
<li>拉取Direwolf软件源代码并编译</li>
|
||
</ol>
|
||
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">cd ~</span><br><span class="line"># 从GitHub拉取代码</span><br><span class="line">git clone https://www.github.com/wb2osz/direwolf</span><br><span class="line"># 如果连不上GitHub,可以从我的镜像拉取</span><br><span class="line">#git clone https://git.ghink.net/Mirrors/direwolf</span><br><span class="line">cd direwolf</span><br><span class="line">mkdir build</span><br><span class="line">cd build</span><br><span class="line">cmake -DUNITTEST=1 ..</span><br><span class="line">make -j4</span><br><span class="line">make test</span><br><span class="line">make install</span><br><span class="line">make install-conf</span><br></pre></td></tr></table></figure>
|
||
|
||
<p>请静待编译完成,玩客云大概需要20分钟,树莓派1B大概在1个小时左右</p>
|
||
<ol start="4">
|
||
<li>创建配置文件</li>
|
||
</ol>
|
||
<p><code>nano /root/direwolf.conf</code></p>
|
||
<p>输入以下内容:</p>
|
||
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"># 输入设备:监听UDP的7355端口,这样比较省资源且不会出现报错情况。</span><br><span class="line"># 输出设备:因为APRS网关只接收信标,不发射,所以没有输出设备,null即是空。</span><br><span class="line">ADEVICE udp:7355 null</span><br><span class="line"># 呼号及SSID,10代表互联网网关设备。</span><br><span class="line">MYCALL BD8CMN-10</span><br><span class="line"># APRS-IS服务器使用APRS.ICU提供的国内节点,可以自己改成别的</span><br><span class="line">IGSERVER china.aprs.icu</span><br><span class="line"># APRS-IS认证呼号-SSID及Passcode,可去tools.ianxia.com生成。</span><br><span class="line">IGLOGIN BD8CMN-10 XXXXX</span><br><span class="line"># 网关自身信标,让其他人知道你的APRS iGate处于工作状态。</span><br><span class="line"># every为自身信标上报间隔时间,lat和long为经纬度,comment为说明信息。</span><br><span class="line">PBEACON sendto=IG delay=1 every=1 symbol=/r lat=30.61999N long=120.57413E freq="" comment="Tongxiang APRS iGate 144.390MHz"</span><br></pre></td></tr></table></figure>
|
||
|
||
<p>Ctrl+O回保存,Ctrl+X退出</p>
|
||
<ol start="5">
|
||
<li>SDR频偏ppm值测量</li>
|
||
</ol>
|
||
<p><code>rtl_test -p</code></p>
|
||
<p>执行命令后等待10分钟以上,等晶振工作温度稳定时,输出的“cumulative PPM”值会趋于恒定,此时就可得出SDR的频偏值。</p>
|
||
<ol start="6">
|
||
<li>测试运行</li>
|
||
</ol>
|
||
<p>将SDR插入小主机并运行如下命令:</p>
|
||
<p><code>rtl_fm -f 144.390M -p 25 - | direwolf -c /root/direwolf.conf -r 24000 -D 1 -</code></p>
|
||
<p>命令原理就是:rtl_fm监听144.640MHz频点(25是以上测得的频偏ppm值,根据实际填写),<br>并将收到的信号用管道符传递给Direwolf,Direwolf通过配置文件direwolf.conf中的规则将解码后的信标内容上传至APRS-IS服务器。<br>确认无报错后按Ctrl+C结束命令运行。</p>
|
||
<ol start="7">
|
||
<li>创建黑名单文件</li>
|
||
</ol>
|
||
<p><code>nano /etc/modprobe.d/rtlsdr.conf</code></p>
|
||
<p>写入下列信息:</p>
|
||
<p><code>blacklist dvb_usb_rtl28xxu</code></p>
|
||
<p>Ctrl+O回保存,Ctrl+X退出</p>
|
||
<ol start="8">
|
||
<li>创建开机启动</li>
|
||
</ol>
|
||
<p>部分新的Linux系统没有rc.local文件了,不用管,先用编辑器尝试修改:</p>
|
||
<p><code>nano /etc/rc.local</code></p>
|
||
<p>如果显示是创建新文件,说明是新版本Linux,先不用管,写入以下信息:</p>
|
||
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">#!/bin/sh -e</span><br><span class="line">#</span><br><span class="line"># rc.local</span><br><span class="line">#</span><br><span class="line"># This script is executed at the end of each multiuser runlevel.</span><br><span class="line"># Make sure that the script will "exit 0" on success or any other</span><br><span class="line"># value on error.</span><br><span class="line">#</span><br><span class="line"># In order to enable or disable this script just change the execution</span><br><span class="line"># bits.</span><br><span class="line">#</span><br><span class="line"># By default this script does nothing.</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">rtl_fm -f 144.390M -p 25 - | direwolf -c /root/direwolf.conf -r 24000 -D 1 -&</span><br><span class="line">exit 0</span><br></pre></td></tr></table></figure>
|
||
|
||
<p>如果文件已经存在内容,只写入以下内容:</p>
|
||
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">rtl_fm -f 144.390M -p 25 - | direwolf -c /root/direwolf.conf -r 24000 -D 1 -&</span><br><span class="line">exit 0</span><br></pre></td></tr></table></figure>
|
||
|
||
<p>注意,启动命令中的参数请自行修改成上述测试命令中的自己的参数。</p>
|
||
<p>Ctrl+O回保存,Ctrl+X退出</p>
|
||
<p>为其赋予运行权限:</p>
|
||
<p><code>chmod +x /etc/rc.local</code></p>
|
||
<p>如果上述文件是新创建的,请接着看,否则重启你的设备,网关就已经搭建好了。</p>
|
||
<p>接下来我们创建系统服务:</p>
|
||
<p><code>vim /etc/systemd/system/rc-local.service</code></p>
|
||
<p>写入以下内容:</p>
|
||
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">[Unit]</span><br><span class="line"> Description=/etc/rc.local Compatibility</span><br><span class="line"> ConditionPathExists=/etc/rc.local</span><br><span class="line"></span><br><span class="line">[Service]</span><br><span class="line"> Type=forking</span><br><span class="line"> ExecStart=/etc/rc.local start</span><br><span class="line"> TimeoutSec=0</span><br><span class="line"> StandardOutput=tty</span><br><span class="line"> RemainAfterExit=yes</span><br><span class="line"> SysVStartPriority=99</span><br><span class="line"></span><br><span class="line">[Install]</span><br><span class="line"> WantedBy=multi-user.target</span><br></pre></td></tr></table></figure>
|
||
|
||
<p>按ESC,:wq回车保存退出</p>
|
||
<p>激活服务:</p>
|
||
<p><code>systemctl enable rc-local.service</code></p>
|
||
<p>启动服务:</p>
|
||
<p><code>systemctl start rc-local.service</code></p>
|
||
<p>大功告成!可以用以下命令查看运行输出:</p>
|
||
<p><code>systemctl status rc-local.service</code></p>
|
||
<p>END</p>
|
||
<h3 id="可以在追踪网站上搜索-BD8CMN-10-查看博主方案效果"><a href="#可以在追踪网站上搜索-BD8CMN-10-查看博主方案效果" class="headerlink" title="可以在追踪网站上搜索 BD8CMN-10 查看博主方案效果"></a>可以在追踪网站上搜索 BD8CMN-10 查看博主方案效果</h3></div>
|
||
</div>
|
||
|
||
<div class="kratos-copyright text-center clearfix">
|
||
<h5 itemprop="copyrightNotice">本作品采用 <a rel="license nofollow" target="_blank" href="https://creativecommons.org/licenses/by-sa/4.0/">知识共享署名-相同方式共享 4.0 国际许可协议</a> 进行许可</h5>
|
||
</div>
|
||
|
||
<footer class="kratos-entry-footer clearfix">
|
||
|
||
<div class="post-like-donate text-center clearfix" id="post-like-donate">
|
||
|
||
|
||
<a class="share" href="javascript:;"><i class="fa fa-share-alt"></i> 分享</a>
|
||
<div class="share-wrap" style="display: none;">
|
||
<div class="share-group">
|
||
<a href="javascript:;" class="share-plain qq" onclick="share('qq');" rel="nofollow">
|
||
<div class="icon-wrap">
|
||
<i class="fa fa-qq"></i>
|
||
</div>
|
||
</a>
|
||
<a href="javascript:;" class="share-plain qzone" onclick="share('qzone');" rel="nofollow">
|
||
<div class="icon-wrap">
|
||
<i class="fa fa-star"></i>
|
||
</div>
|
||
</a>
|
||
<a href="javascript:;" class="share-plain weixin pop style-plain" rel="nofollow">
|
||
<div class="icon-wrap">
|
||
<i class="fa fa-weixin"></i>
|
||
</div>
|
||
<div class="share-int">
|
||
<div class="qrcode" id="wechat-qr"></div>
|
||
<p>打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮</p>
|
||
</div>
|
||
</a>
|
||
<a href="javascript:;" class="share-plain weibo" onclick="share('weibo');" rel="nofollow">
|
||
<div class="icon-wrap">
|
||
<i class="fa fa-weibo"></i>
|
||
</div>
|
||
</a>
|
||
<a href="javascript:;" class="share-plain facebook style-plain" onclick="share('facebook');" rel="nofollow">
|
||
<div class="icon-wrap">
|
||
<i class="fa fa-facebook"></i>
|
||
</div>
|
||
</a>
|
||
<a href="javascript:;" class="share-plain twitter style-plain" onclick="share('twitter');" rel="nofollow">
|
||
<div class="icon-wrap">
|
||
<i class="fa fa-twitter"></i>
|
||
</div>
|
||
</a>
|
||
</div>
|
||
<script type="text/javascript">
|
||
$(()=>{
|
||
new QRCode("wechat-qr", {
|
||
text: "https://blog.ianxia.com/2024/11/25/%E5%88%A9%E7%94%A8Linux%E5%B0%8F%E4%B8%BB%E6%9C%BA%E5%92%8CSDR%E6%90%AD%E5%BB%BAAPRS-iGate/",
|
||
width: 150,
|
||
height: 150,
|
||
correctLevel : QRCode.CorrectLevel.H
|
||
});
|
||
});
|
||
function share(dest) {
|
||
const qqBase = "https://connect.qq.com/widget/shareqq/index.html?";
|
||
const weiboBase = "https://service.weibo.com/share/share.php?";
|
||
const qzoneBase = "https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?";
|
||
const facebookBase = "https://www.facebook.com/sharer/sharer.php?";
|
||
const twitterBase = "https://twitter.com/intent/tweet?";
|
||
const hostUrl = "https://blog.ianxia.com/2024/11/25/%E5%88%A9%E7%94%A8Linux%E5%B0%8F%E4%B8%BB%E6%9C%BA%E5%92%8CSDR%E6%90%AD%E5%BB%BAAPRS-iGate/";
|
||
const title = "「利用Linux小主机和SDR搭建APRS iGate」";
|
||
const excerpt = `导言APRS网络中的设备在通过无线电发送APRS信标后,只有附近的设备才能接受到内容。而如果要接入到全球的APRS-IS网络,分享自己的实时位置。则需要附近部署APRS iGate,通俗地讲就是一个APRS的数据网关,负责接收、解码、...`;
|
||
let _URL;
|
||
switch (dest) {
|
||
case "qq" : _URL = qqBase+"url="+hostUrl+"&title="+title+"&desc=&summary="+excerpt+"&site=cxpy"; break;
|
||
case "weibo" : _URL = weiboBase+"url="+hostUrl+"&title="+title+excerpt; break;
|
||
case "qzone" : _URL = qzoneBase+"url="+hostUrl+"&title="+title+"&desc=&summary="+excerpt+"&site=cxpy"; break;
|
||
case "facebook" : _URL = facebookBase+"u="+hostUrl; break;
|
||
case "twitter" : _URL = twitterBase+"text="+title+excerpt+"&url="+hostUrl; break;
|
||
}
|
||
window.open(_URL);
|
||
};
|
||
</script>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="footer-tag clearfix">
|
||
<div class="pull-left">
|
||
<i class="fa fa-tags"></i>
|
||
<a class="tag-none-link" href="/tags/%E6%8A%80%E6%9C%AF/" rel="tag">技术</a>
|
||
</div>
|
||
<div class="pull-date">
|
||
<time datetime="2024-11-25T08:04:46.430Z" itemprop="dateModified">最后编辑:2024-11-25</time>
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
</div>
|
||
|
||
<nav class="navigation post-navigation clearfix" role="navigation">
|
||
|
||
<div class="nav-previous clearfix">
|
||
<a title=" Python证书链出问题导致的模块全部报错" href="/2024/10/30/Python证书链出问题导致的模块全部报错/">< 上一篇</a>
|
||
</div>
|
||
|
||
|
||
</nav>
|
||
|
||
|
||
</article>
|
||
|
||
|
||
|
||
</section>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<section id="kratos-widget-area" class="col-md-4 hidden-xs hidden-sm">
|
||
<!-- 文章和页面根据splitter来分割,没有的话就从头开始设置为sticky -->
|
||
|
||
|
||
<aside id="krw-about" class="widget widget-kratos-about clearfix">
|
||
<div class="photo-background"></div>
|
||
<div class="photo-wrapper clearfix">
|
||
<div class="photo-wrapper-tip text-center">
|
||
<img class="about-photo" src="https://2-cdn.ianxia.com/images/avatar/common.png" loading="lazy" decoding="auto" />
|
||
</div>
|
||
</div>
|
||
<div class="textwidget">
|
||
<p class="text-center">Codice est quasi poem a.</p>
|
||
</div>
|
||
<div class="site-meta">
|
||
<a class="meta-item" href="/archives/">
|
||
<span class="title">
|
||
文章
|
||
</span>
|
||
<span class="count">
|
||
25
|
||
</span>
|
||
</a>
|
||
<a class="meta-item" href="/categories/">
|
||
<span class="title">
|
||
分类
|
||
</span>
|
||
<span class="count">
|
||
3
|
||
</span>
|
||
</a>
|
||
<a class="meta-item" href="/tags/">
|
||
<span class="title">
|
||
标签
|
||
</span>
|
||
<span class="count">
|
||
3
|
||
</span>
|
||
</a>
|
||
</div>
|
||
</aside>
|
||
|
||
<div class="sticky-area">
|
||
|
||
|
||
<aside id="krw-categories" class="widget widget-kratos-categories clearfix">
|
||
<h4 class="widget-title"><i class="fa fa-folder"></i>分类目录</h4>
|
||
<ul class="category-list"><li class="category-list-item"><a class="category-list-link" href="/categories/%E6%8A%80%E6%9C%AF/">技术</a><span class="category-list-count">16</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E6%91%84%E5%BD%B1/">摄影</a><span class="category-list-count">7</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E8%B5%84%E6%BA%90/">资源</a><span class="category-list-count">2</span></li></ul>
|
||
</aside>
|
||
|
||
|
||
|
||
|
||
<aside id="krw-tags" class="widget widget-kratos-tags clearfix">
|
||
<h4 class="widget-title"><i class="fa fa-tags"></i>标签聚合</h4>
|
||
<div class="tag-clouds">
|
||
<a href="/tags/%E6%8A%80%E6%9C%AF/" style="font-size: 0.8em;">技术</a> <a href="/tags/%E6%91%84%E5%BD%B1/" style="font-size: 0.7em;">摄影</a> <a href="/tags/%E8%B5%84%E6%BA%90/" style="font-size: 0.6em;">资源</a>
|
||
</div>
|
||
</aside>
|
||
|
||
|
||
|
||
<aside id="krw-posts" class="widget widget-kratos-posts">
|
||
<h4 class="widget-title"><i class="fa fa-file"></i>最新文章</h4>
|
||
<div class="tab-content">
|
||
<ul class="list-group">
|
||
|
||
|
||
|
||
|
||
<a class="list-group-item" href="/2024/11/25/%E5%88%A9%E7%94%A8Linux%E5%B0%8F%E4%B8%BB%E6%9C%BA%E5%92%8CSDR%E6%90%AD%E5%BB%BAAPRS-iGate/"><i class="fa fa-book"></i> 利用Linux小主机和SDR搭建APRS iGate</a>
|
||
|
||
|
||
|
||
|
||
|
||
<a class="list-group-item" href="/2024/10/30/Python%E8%AF%81%E4%B9%A6%E9%93%BE%E5%87%BA%E9%97%AE%E9%A2%98%E5%AF%BC%E8%87%B4%E7%9A%84%E6%A8%A1%E5%9D%97%E5%85%A8%E9%83%A8%E6%8A%A5%E9%94%99/"><i class="fa fa-book"></i> Python证书链出问题导致的模块全部报错</a>
|
||
|
||
|
||
|
||
|
||
|
||
<a class="list-group-item" href="/2024/10/09/Mac%E5%AE%89%E8%A3%85%E8%BD%AF%E4%BB%B6%E6%97%B6%E6%8F%90%E7%A4%BA%E5%B7%B2%E6%8D%9F%E5%9D%8F%E7%9A%84%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/"><i class="fa fa-book"></i> Mac安装软件时提示已损坏的解决办法</a>
|
||
|
||
|
||
|
||
|
||
|
||
<a class="list-group-item" href="/2023/07/18/%E6%91%84%E5%BD%B1%E4%BD%9C%E5%93%81-Field/"><i class="fa fa-book"></i> 摄影作品:Field</a>
|
||
|
||
|
||
|
||
|
||
|
||
<a class="list-group-item" href="/2023/02/25/Python-%E4%B8%AD%E5%85%B3%E4%BA%8E-round-%E5%87%BD%E6%95%B0%E7%9A%84%E5%B0%8F%E5%9D%91/"><i class="fa fa-book"></i> Python 中关于 round 函数的小坑</a>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</div>
|
||
</aside>
|
||
|
||
|
||
</div>
|
||
</section>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<footer>
|
||
<div id="footer" >
|
||
<div class="container">
|
||
<div class="row">
|
||
<div class="col-md-6 col-md-offset-3 footer-list text-center">
|
||
<ul class="kratos-social-icons">
|
||
<!-- Keep for compatibility -->
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<!-- New links -->
|
||
|
||
</ul>
|
||
<ul class="kratos-copyright">
|
||
<div>
|
||
<li>© 2024 Bigsk 版权所有.</li><br>
|
||
<li>本站已运行<span id="span_dt">Loading...</span></li><br>
|
||
<li>本站支持 IPv6 访问</li><br>
|
||
</div>
|
||
<!--
|
||
<div>
|
||
|
||
</div>
|
||
<div>
|
||
|
||
|
||
</div>
|
||
-->
|
||
<div><br><br></div>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="kr-tool text-center">
|
||
<div class="tool">
|
||
|
||
<div class="box search-box">
|
||
<a href="/search/">
|
||
<span class="fa fa-search"></span>
|
||
</a>
|
||
</div>
|
||
|
||
|
||
<div class="box theme-box" id="darkmode-switch">
|
||
<span class="fa fa-adjust"></span>
|
||
</div>
|
||
|
||
|
||
|
||
</div>
|
||
<div class="box gotop-box">
|
||
<span class="fa fa-chevron-up"></span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
</div>
|
||
</div>
|
||
|
||
<script defer src="/vendors/bootstrap@3.3.4/dist/js/bootstrap.min.js"></script>
|
||
<script defer src="/vendors/nprogress@0.2.0/nprogress.js"></script>
|
||
<script>
|
||
if (!window.kr) {
|
||
window.kr = {};
|
||
}
|
||
window.kr.notMobile = (!(navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)));
|
||
window.kr.siteRoot = "/";
|
||
</script>
|
||
|
||
|
||
<script async src="/js/candy.min.js"></script>
|
||
|
||
|
||
|
||
|
||
<script defer src="/vendors/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js"></script>
|
||
|
||
<script defer src="/js/kratosr.min.js"></script>
|
||
<script defer src="/js/pjax.min.js"></script>
|
||
|
||
|
||
|
||
<!-- Extra support for third-party plguins -->
|
||
|
||
|
||
</body>
|
||
</html> |