更新 _posts/2022-03-27-radio.md, _posts/2019-04-24-shell.md, _posts/2021-05-07-ssh.md, _posts/2022-03-12-alpine.md, _posts/2022-02-15-termux.md

master
mayx 3 years ago
parent e78ff9779d
commit de16f53f05

@ -9,13 +9,13 @@ tags: [Shell, 编程]
<!--more-->
Shell 脚本很棒,你可以非常轻松地写出有用的东西来。甚至像是下面这个傻瓜式的命令:
```
```shell
# 用含有 Go 的词汇起名字:
$ grep -i ^go /usr/share/dict/* | cut -d: -f2 | sort -R | head -n1
goldfish
```
如果用其他编程语言,就需要花费更多的脑力,用多行代码实现,比如用 Ruby 的话:
```
```ruby
puts(Dir['/usr/share/dict/*-english'].map do |f|
File.open(f)
.readlines
@ -25,7 +25,7 @@ end.flatten.sample.chomp)
Ruby 版本的代码虽然不是那么长,也并不复杂。但是 shell 版是如此简单,我甚至不用实际测试就可以确保它是正确的。而 Ruby 版的我就没法确定它不会出错了,必须得测试一下。而且它要长一倍,看起来也更复杂。
这就是人们使用 Shell 脚本的原因,它简单却实用。下面是另一个例子:
```
```shell
curl https://nl.wikipedia.org/wiki/Lijst_van_Nederlandse_gemeenten |
grep '^<li><a href=' |
sed -r 's|<li><a href="/wiki/.+" title=".+">(.+)</a>.*</li>|\1|' |

@ -17,19 +17,19 @@ tags: [网络, SSH, 指南]
假如我有一台电脑在家,然后我还租了一个垃圾云服务器,服务器的性能很差但是家里的电脑性能很好。假如有一天我想在外面去玩我的电脑要怎么办呢?
一般来说家里的电脑都是在内网之中,而服务器都是在公网,任何一个地方都能访问,现在我如果想访问家里的电脑直接连难度很大,几乎是做不到的对吧,于是这时候我们可以让家里的电脑去连服务器,这样我们就有一条链路连接到家里的电脑了,然后我们再用别的设备去连服务器,这样我们就能间接访问我们的电脑了。
具体要怎么做呢很简单用SSH就能解决这个问题首先一般服务器上都装的是Linux系统一般都是自带OpenSSH的而且还是SSH服务端现在的Windows 10也是默认自带OpenSSH的只不过是客户端。所以首先我们要做的就是用家里的电脑去连服务器。这时候的连接不能直接SSH连过去普通的连没有任何作用只是登录到远程服务器上了而已我们必须要加上一些参数就像这样
```
```shell
ssh -R 3389:127.0.0.1:3389 root@remote-ip
```
执行这条指令之后系统仍然会正常的去连接到远程服务器上,但是你如果执行一下`netstat -nlp`的话就可以发现SSH在本地也监听了一个3389的端口。不过默认的配置下SSH只会在服务器上映射这个端口在服务器外是连不上的另外如果说我只想穿透而不想打开服务器终端要该怎么办呢
首先默认不登录终端这个方法很简单,加点参数就可以,就像这样:
```
```shell
ssh -CfNR 3389:127.0.0.1:3389 root@remote-ip
```
这样启动穿透之后就不会在家里的电脑上一直开着服务器终端了,只会有一个黑框而已,当然因为用了`-f`参数你即使把黑框关了也不会影响。另外还有就是映射到服务器外这个问题其实这个问题也很好解决在sshd配置文件里把`GatewayPorts no`改成`GatewayPorts yes`,设置好了之后别忘了在服务器的防火墙和服务器托管商的防火墙那里放行端口。
## 端口映射
假如上面的穿透你设置好了但是你说你不知道sshd配置文件在哪里防火墙关不掉服务器不是你的好家伙那内网穿透还搞什么没关系SSH比你想象的要厉害假如你没办法开服务器的端口那你可以把服务器上面的端口映射到本机上。
那么现在内网穿透已经搞好了,但是由于各种各样的原因你访问不到服务器的端口,这时候你在外面,可以在外面用电脑执行以下命令:
```
```shell
ssh -CfNL 3390:127.0.0.1:3389 root@remote-ip
```
这样一波操作你家里的那台电脑上的3389端口就被映射到了你现在用的电脑上的3390端口了当然效率很低这个没办法毕竟SSH这些功能没有完全流行起来也是因为它的效率确实低而且还容易断也没个自带的断线重连……
@ -37,7 +37,7 @@ ssh -CfNL 3390:127.0.0.1:3389 root@remote-ip
虽然说我现在很想吐槽一下SSH并且想要赶紧说说它的一些上位替代不过我还是先把所有的SSH厉害的功能讲完吧。
SSH更厉害的功能就是随手开代理又叫做动态端口映射一般来说如果想要在服务器上配置一个代理很麻烦而且也很费时间但是如果用SSH隧道开一个代理就只用一条命令而且还不需要在服务器上做任何配置真的是非常的方便。
具体是什么命令呢?很简单,就是这样:
```
```shell
ssh -CfND 127.0.0.1:1080 root@remote-ip
```
执行这条命令之后就会在本机开一个监听地址为`127.0.0.1:1080`的socks5代理你可以使用Proxifier之类的socks5客户端去连接它然后就能直接通过这个代理用服务器上网了。假如你还想把这个代理共享给其他同在局域网的人用可以把`127.0.0.1`改成`0.0.0.0`并且加一个`-g`的参数,这样同网络的人也就可以通过你的电脑连接到隧道上了。

@ -22,7 +22,11 @@ tags: [Termux, Android]
在安装了发行版之后换源安装软件就不会再出问题了在那个上面可以随便安装最新的软件包。我安装了一套Python和Jupyter都可以正常运行接下来如果可以的话就让我试试看平板使用Termux效果如何吧。
# 增强性改动
我的平板没有物理键盘,然后输入法上也没有上下左右键,导致我操作的时候很麻烦,后来我在网上查了一下,只要运行`mkdir ~/.termux && echo "extra-keys = [['ESC','/','-','HOME','UP','END','PGUP'],['TAB','CTRL','ALT','LEFT','DOWN','RIGHT','PGDN']]" > ~/.termux/termux.properties`然后重启Termux就可以在键盘上方出现需要的大多数按键感觉效果还不错。
我的平板没有物理键盘,然后输入法上也没有上下左右键,导致我操作的时候很麻烦,后来我在网上查了一下,只要运行
```shell
mkdir ~/.termux && echo "extra-keys = [['ESC','/','-','HOME','UP','END','PGUP'],['TAB','CTRL','ALT','LEFT','DOWN','RIGHT','PGDN']]" > ~/.termux/termux.properties
```
然后重启Termux就可以在键盘上方出现需要的大多数按键感觉效果还不错。
# 总结
其实这也是更好利用旧设备的方案,之前我也有写过[怎样更好的利用旧手机](/2020/03/08/oldphone.html)现在如果用了Termux效果就更好了之前想要安装Web环境用的还是KSWEB的方案现在的话想安什么环境就和操作电脑和服务器一样简单了。无论如何旧设备还是用起来更好闲置确实就毫无意义了不如回收掉或者换盆啥的。

@ -41,7 +41,7 @@ location ~ \.php$ {
除此之外还有把php-fpm和redis配置成监听Unix Domain之类的优化操作这些之前的文章都有写这里就不多做描述了。
## 配置BBR
之前用CentOS的时候我是直接用的脚本整的BBR不过BBR好像是高版本Linux内核自带的功能本来就不需要安装Alpine的内核版本好像是5.15就不用像CentOS那样还要升级内核了所以只要执行以下命令
```bash
```shell
sed -i '/net.core.default_qdisc/d' /etc/sysctl.conf
sed -i '/net.ipv4.tcp_congestion_control/d' /etc/sysctl.conf
echo "net.core.default_qdisc = fq" >> /etc/sysctl.conf

@ -0,0 +1,48 @@
---
layout: post
title: 用树莓派自制FM电台
tags: [树莓派, 电台, FM]
---
无线电还挺有意思啊。<!--more-->
# 起因
其实我在很早以前就知道树莓派可以当广播电台了,但是我由于我作死的最早开始用的系统是[piCore](/2020/12/07/picore.html)而且感觉它功能够用就再没换回成官方系统。然而树莓派很多有趣的项目都是基于官方系统而不是不知名的发行版制作的所以实际上虽然我知道树莓派有能力成为电台但是从来没有试过。然后最近突然想试试看所以就把Raspberry Pi OS lite又下载回来刷到卡里想试试看做个电台怎么样。
# 树莓派电台软件的选择
一般从网上找教程的话好像推荐直接安装[rpitx](https://github.com/F5OEO/rpitx)不过我看这个项目有段时间没有更新了虽然功能好像更强大吧……不过我目前就只用的是FM电台的功能我更希望它的电台功能更强大所以我又看了看别的项目。我最先看的是[fm_transmitter](https://github.com/markondej/fm_transmitter)这个项目根据文档所述的方法安装之后确实能用不过在整这个项目的时候因为我没有杜邦线传输距离很短大概信号范围也就1m左右吧。后来我又搜了一下找到了[PiFmAdv](https://github.com/miegl/PiFmAdv)这个项目,它看起来是基于[PiFmRds](https://github.com/ChristopheJacquet/PiFmRds)项目改编升级的功能多了很多但是我不知道这个作者是怎么想的原来的项目还支持ARM64(aarch64)结果改完之后反倒不支持了😓最开始我怎么编译都不通过后来看了一眼Makefile发现不太对劲然后我就简单改了一下参数总算可以编译通过了。这一点我已经[提了issue](https://github.com/miegl/PiFmAdv/issues/93)不知道作者会不会改如果不会改的话大家要是想在64位的树莓派系统上运行需要注意改一下Makefile。
# PiFmAdv的体验
用了一下PiFmAdv之后发现这个清晰度真的和项目描述一样音质比fm_transmitter好了很多也没有杂音了。后来我又看了看文档发现它最多支持同时通过3个GPIO接口发射信号于是我试了试用以下命令启动
```shell
sox audio.mp3 -t wav - repeat - | sudo ./pi_fm_adv --audio - --freq 108.0 --power 7 --gpio 4 --gpio 20 --gpio 32 --rds 0
```
信号也真的好了很多。这下一下就让我起了兴趣于是就去淘宝上买了点杜邦线回来当天线。按照说明来看这个程序只能在GPIO的4、20和32号口输出信号貌似是用到了GPCLK的功能所以只能用这些针脚。4号和20号口很容易找具体位置可以看下面我打"x"的位置:
```
,--------------------------------.
| ooooooooooooooooooxo J8 +====
| 1ooxoooooooooooooooo | USB
| +====
| Pi Model 3B V1.2 |
| +----+ +====
| |D| |SoC | | USB
| |S| | | +====
| |I| +----+ |
| |C| +======
| |S| | Net
| pwr |HDMI| |I||A| +======
`-| |--------| |----|V|-------'
```
但是32号口我是怎么找都没找到在网上各种查资料都没有找到32号GPIO口……可能它是走的板子内的某根线吧……
具体要接多长的天线呢我看一般人推荐就接一节杜邦线就行了大概10cm当然这我肯定不会满足我查了一下相关原理好像说4号口理论上接1.5m长的天线可以最大化利用它的能力所以我就直接买的公对母的线接了2条大概1.4m的线接到了4号和20号口打开一试信号真的一下就扩展到了将近1km的样子我用手机的收音机功能测试在只有1道墙隔开的情况基本上1km没有任何问题如果隔得墙多了大概只能到50m左右。不过这个发射信号的能力倒是比WiFi强了不少估计是因为频率比较低吧。
这个程序不仅支持发射音频信号还能发射RDS数据不过很遗憾我没有接收RDS数据的设备所以我也测不了……
# 可能的风险与危害
首先个人发射无线电波在很多国家都是违法的我搜了一下大多数国家在电台频段个人发射的功率限制基本上连1mW都不到树莓派一个针脚最大发射电流是16mA和电压3.3V相乘就要接近50mW了所以要想玩的话要么就不要接天线或者说不要接太长的天线或者不要开时间太长免得被别人搜到还有就是不要占用有信号的频道一是自己听着也乱二是这样如果有人在用更容易被发现。另外不推荐设置超过87-108Mhz的频率一是这样中国的收音机也接收不到二是再往上就要到航空用频道再往下就可能到军用频道的那些频道占用的话还是挺危险的所以一般给无线电爱好者分的频段好像都在300-400Mhz的样子当然这样那就不是FM电台了在那个频段的好像都是对讲机啥的。所以最终还是推荐别开时间太长而且不推荐播小广告啥的放音乐一般好像没人管播广告那就是妥妥的“黑广播”了。
另外还有可能的危害比如说假如有人在飞机上在航空频段开广播,这个程序可是没有限制频率的,那可能真的可以让飞机驾驶舱播广播,这可就不是小问题了。严重的可能飞行员就只能迫降了,毕竟要是听不清塔台的信号那还是有大问题的。
# 来点阴谋论
综上所述我觉得从权力机构的层面可能因此有限制无线电知识的情况。其实普通人想发射无线电是非常容易的事情有电流通过的地方就有电磁波这么说来那我觉得不只是树莓派这种连接虚拟与现实的设备能做得到发射无线电但凡是有导线能改变通电状态的设备理论上应该都可以。那我是不是用扬声器USB线等能传输信号的设备都可以发射这让我想起了Fabrice Bellard大神写的一个[用VGA显卡来发射DVB-T信号的程序](https://bellard.org/dvbt/)那个程序应该说是非常厉害了我觉得理论上我用扬声器发射FM信号这种事情应该是能做到的就是不知道声卡能不能不解码直接向扬声器发射电流另外还有个好处就是树莓派实际上是用PMW模拟的FM信号而扬声器是可以调整电流大小的理论上实现可能更简单吧……其实要是说呢以前的手机是支持当作FM电台的现在就都不支持了所以我觉得说不定不是大家做不出来这样的程序而是做出来的人都消失了😂。希望能有大佬给点力吧能把这种软件多开源点出来。
# 感想
感觉无线电还挺有意思的,要不然回头学一学考个业余电台操作证书?我之前还看过一位大佬[用卫星和世界各地的人通信](https://blog.aoaoao.me/p/amateur-satellite/),感觉真的非常厉害。不过在这里面有好多法律的限制还挺麻烦的……可能也就只能自己玩玩了吧。
Loading…
Cancel
Save