Init commit

This commit is contained in:
assada 2023-07-22 03:50:13 +03:00
commit b748b0b657
Signed by: assada
GPG Key ID: 8905E8CE5CC3000D
4 changed files with 131 additions and 0 deletions

72
README.md Normal file
View File

@ -0,0 +1,72 @@
# APRS to IRC Gateway via RTL-SDR
## Install RTL-SDR
```bash
sudo apt-get install libasound2-dev libudev-dev libax25 ax25-apps ax25-tools git-core git cmake libusb-1.0-0-dev build-essential
cd ~
cat <<EOF >no-rtl.conf
blacklist dvb_usb_rtl28xxu
blacklist rtl2832
blacklist rtl2830
EOF
sudo mv no-rtl.conf /etc/modprobe.d/
git clone git://git.osmocom.org/rtl-sdr.git
cd rtl-sdr/
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
make
sudo make install
sudo ldconfig
cd ~
sudo cp ./rtl-sdr/rtl-sdr.rules /etc/udev/rules.d/
sudo reboot
```
## Install Direwolf
```bash
git clone https://github.com/wb2osz/direwolf.git
cd direwolf
mkdir build && cd build
cmake ..
make -j4
sudo make install
make install-conf
```
## Radio stack
### Create config file
```bash
ACHANNELS 1
ADEVICE null null
CHANNEL 0
MYCALL CALLSIGN-10
#IGSERVER aunz.aprs2.net
#IGLOGIN <CALLSIGN> 23018
MODEM 1200
AGWPORT 8000
KISSPORT 8001
```
### Start radio stack
```bash
rtl_fm -f 144.80M - | direwolf -c ./dire_sdr.conf -r 24000 -D 1 -
```
or `chmod a+x aprs.sh` and `./aprs.sh`
## Run IRC Gateway
```shell
pip install kiss3 irc
KISS_HOST=localhost KISS_PORT=8001 IRC_HOST=irc.example.com IRC_PORT=6697 CHANNEL_NAME="#example" BOT_NICK=aprs python3 aprs.py
```

46
aprs.py Normal file
View File

@ -0,0 +1,46 @@
#!/usr/bin/env python3
import asyncio
import logging
import os
import irc.client
import irc.client_aio
from ax253 import Frame
import kiss
from functools import partial
MYCALL = os.environ.get("MYCALL", "N0CALL")
KISS_HOST = os.environ.get("KISS_HOST", "10.10.10.91")
KISS_PORT = os.environ.get("KISS_PORT", "8001")
server = os.environ.get('IRC_HOST', "irc.dead.guru")
port = int(os.environ.get('IRC_PORT', 6697))
channel = os.environ.get('CHANNEL_NAME', "#spau")
nickname = os.environ.get('BOT_NICK', "aprsbot")
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.DEBUG)
async def main():
loop = asyncio.get_event_loop()
c = await irc.client_aio.AioReactor(loop=loop).server().connect(
server, port, nickname, connect_factory=irc.connection.AioFactory(ssl=True)
)
transport, kiss_protocol = await kiss.create_tcp_connection(
host=KISS_HOST,
port=KISS_PORT,
loop=loop,
)
c.privmsg(channel, '[APRS] Starting...')
async for frame in kiss_protocol.read():
print('Got frame')
c.privmsg(channel, str(frame))
if __name__ == "__main__":
asyncio.run(main())

2
aprs.sh Normal file
View File

@ -0,0 +1,2 @@
#!/bin/bash
rtl_fm -f 144.80M - | direwolf -c ./dire_sdr.conf -r 24000 -D 1 -

11
dire_sdr.conf Normal file
View File

@ -0,0 +1,11 @@
ACHANNELS 1
ADEVICE null null
CHANNEL 0
MYCALL AS5ADA-10
#IGSERVER aunz.aprs2.net
#IGLOGIN <CALLSIGN> 23018
MODEM 1200
AGWPORT 8000
KISSPORT 8001