Init commit
This commit is contained in:
commit
b748b0b657
72
README.md
Normal file
72
README.md
Normal 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
46
aprs.py
Normal 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
2
aprs.sh
Normal 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
11
dire_sdr.conf
Normal 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
|
Loading…
Reference in New Issue
Block a user