Packet Radio (Post Apocalyptic Internet?) – Computerphile

I exchange my call sign with someone in Slovakia. If the conditions are just right–and that depends on weather and sun spot activity and stuff– You can really get your RF out across the world. 2 meter band is generally considered to be much closer range. (Are we looking at the post-apocalyptic internet here?) I think so, yeah. (So, after civilization falls apart…) I’ll be talking to Dave over… making sure everything’s OK. It seemed to die–briefly. I’m scared to touch anything because it will suddenly die (So this is quite flaky stuff, right?) It mainly– it’s normally very reliable the problem is that we have these cables which I made myself and, ah… Yeah, don’t look at this one. (Why have we got two ThinkPads sitting on the desk in front of us?) …going to sleep… Well, I thought it might be interesting to talk a little bit about packet radio and maybe touch on amateur radio in general as well. Packet radio is… It’s essentially sending data over the radio waves and the frequency spectrum I’m using at the moment is the amateur radio bands. So this is 2-meter band, what I’m using now, and that’s about 144-145 MHz 2-meter band is probably the band with the most packet radio Because there’s something called “APRS” which is the Automatic Packet Reporting System That’s all based upon one protocol called “AX.25” and this is kind of a… Sort of… It’s AX.25, but… modified to accommodate some of the things required to make it work on amateur radio, instead of over some kind of cable. Okay. So we’ve got two of the cheapest ham radios. These are Baofeng UV-5Rs We’ve got two laptops, and we’ve got two– what are essentially modems, they’re called, “terminal node controllers,” and they essentially take data through a serial input and turn it into some some sort of strange sound, a bit like dial-up Essentially, we’re encapsulating what we would normally put on Ethernet, but We’re encapsulating into what’s called “KISS framing,” and on top of that: AX.25 I think I should probably draw this out, because going it’s a bit complicated… Let’s draw a radio–and then we have our modems, or terminal node controllers, and these are talking to the radio. This is actually an audio cable, So this is just audio going straight into the radio. And then we have two computers, …this is my laptop… And this is a serial cable. I will draw the frame, the TCP/IP… At the very bottom we have KISS which stands for “keep it simple stupid,” and the way this type of framing works is that if you send a zero, that means there’s a data frame coming in. So it’s very simple. After that we have AX.25, and this essentially talks at hardware addresses So what you might typically consider to be MAC addresses, but in the case of radio–it’s actually my callsign, which is– M6PIU And… (And if you need to get in touch with Aaron…) Get on the radio (…urgently!) Yeah, and then so this AX.25 actually becomes the lowest layer, in the setup that I’ve got here, over the TCP/IP stack. So this is, let’s say M6PIU, to my friend, G1ZEK. This guy actually gave me this TNC here, so This is very low-level framing of messages. It’s just saying, “pass this data over to this, and this is the the length of the data.” This entire thing is going to be the the TCP/IP stack, with this framing underneath it. On top of that, we have the internet layer. So, this internet layer works on the basis of IP addresses, so Ham radio operators are fortunate enough to be allocated: That’s a huge range of IP addresses, and You can, as a ham radio operator, be allocated a small portion of that. This is the kind of level that the Internet Protocol layer runs at Actual IP addresses rather than Ethernet addresses or call signs as in the case of AX.25. If you look in arp.c in the Linux kernel, you’ll see specific references to AX.25, for the way that it formats callsigns, as if they were Ethernet addresses, MAC addresses. On top of the internet layer, we have the transport layer. This is TCP… so this is TCP over IP… Let’s just call it TCP It could also be UDP And on top of this, we have the application. Maybe we can talk about what’s actually being transmitted right now: Every five seconds, we’re sending a ping. It’s at the same level of TCP/UDP so, we could also write “ping” here, and you’d also have–for example, “ARP”–here. This is the address resolution protocol. It’s converting Internet addresses into Ethernet or call signs. When I want to send a ping to this machine, essentially what’s happening is, my computer first uses ARP to resolve the call sign for the IP address. So it says, “who is tell […]” and then the address that it’s coming from. So in this case, So– 17, if it’s available, will respond to this packet and say that, is at M6PIU-[some SSID] So in the case, I think one of these is 0 and the other one is 1. (Is that different devices?) Yes, because the call sign is being used as the Ethernet address in a typical sense, You can’t have the same address in two places, especially if you use more than two machines, because they would both respond, or, they would both end up receiving a packet destined to a certain IP address Once you know the call sign of the Ethernet address, the packets can be actually sent via AX.25, because that’s the the only level above AX.25 It doesn’t understand anything past that, it’s just call signs and packet length. This information is going to be cached for a while. I forget how long exactly, maybe five or ten minutes? Or until it fails to contact the remote host again. (I’ve got a vision of the airwaves being full, with lots of this happening from lots of devices, but on the same channel, is that how it works?) Lots of devices can use the same frequency with AX.25, because the packets are being sent with a sender and a recipient in each packet. (You get clashes, though?) You do– actually one of the biggest problems with running modern-day Linux on Ham radio is that it’s expecting the network hardware to respond very quickly So when it does this step, it says, “who has this address, tell whoever,” it ha s already requested the same information again before it’s even gone out of the the modem. So, you have to set this to a more reasonable time, like 5 seconds or something, instead of 100. If you’re continuously requesting the same information, the recipient has no time to respond, because this is only half duplex, only one person on the radio wave, or the frequency, can speak at a time. This one is actually pinging right now. I’ve set the interval to five seconds and it takes about 2.6 seconds for a ping to reach its destination and be replied to. What we have here is machine 0 pinging machine 1, so this is from–no ARP information cached at all yet– So, the first packet that we received is coming from M6PIU, with some SSID, going to QST, and QST is kind of USQ-code-speak for, “All operators that are listening,” so we’re saying, to everyone that’s listening, “Tell me who has this address,” This gets sent a couple of times, and eventually, machine 1 responds to machine 0, so it’s coming again from me… …to me… …and it’s saying that machine 1 address is, and it’s at this, sort of Ethernet address, or, hardware address This hardware address is actually my callsign, encoded in some strange way with some bit shifting, just to make the character set fit into what would typically be a hardware address. This happens a few times, because not all packets are sent successfully. Sometimes, it’s quite impatient and will send the same packet again, especially in the beginning, but once machine 0 has learned that the hardware address, my callsign, is associated with the IP address of Machine 1, it can start sending ping requests. These purple packets are ICMP, which is the pinging protocol. Here we have two ping requests, and then two responses. These are going at a higher layer now in the TCP/IP stack. They’re using IP addresses as opposed to hardware addresses. What we ended up with is a ping response time of about two and a half seconds, which is not bad — considering we’re running at, probably around, 1.2 kilobits per second. (This is a closed demo, with two machines and two radios, does anyone else have that?) I quite frequently talk to my friend G1ZEK over AX.25 Not via TCP, but at a lower level. If you don’t connect up the stuff, or if you don’t activate the TCP layers above this, you can connect to these just by a serial terminal, such as GNU Screen, and you can exchange messages, just as text. It’s much more reliable than trying to get TCP/IP working off of all of this. (So, because you’ve got these layers working on TCP/IP…) (what does that give us that you wouldn’t get another way?) (Would you be able to, say, send a website or…?) We can definitely send a website. I can show you that, it will take quite a while to load. It will be a very small website. Let’s set up a small web server, and try to load that page. One of the problems is that– So really, operating two radios in such close proximity is a terrible idea. You can actually damage them. I’ve got these set to 1 watt, and I tried to put as much space between them as I can. The problem is that with these very cheap USB-to-serial adapters, they can crash if there’s too much RF around, so a lot of the time I have to keep on restarting this, because It breaks basically. Let’s try and load a page. (so the flashing there is connection… the packets being sent…) Yeah, so on this side It says X method for transmit and receive. You can see that when transmit is red here, receiver’s red over on this side, so they should be alternating. Ping actually takes up a significant amount of bandwidth, when… here at this speed, so I’ll kill ping. It seems to be working. So your web browser open. I propose a little page earlier it’s only one sentence, but… (What we lookin’ at for a sentence? A minute? Several minutes?) It depends on how reliable it is, because it could take hours at this rate. But a single sentence, I don’t know maybe if you have everything tuned quite precisely maybe 20 seconds or something. (Shall I ask a silly question: pictures?) I have done it. It took maybe 10 minutes, but a picture of me has transmi… Well, probably it’s out of space now, you know a A very weak signal of my face. This machine on the Left received a packet saying, “here is this address, tell that one…” but, it doesn’t seem to have responded… These connectors are also very flaky… Give them a squeeze… Come on, you can do it! From the activity light here, it looks like pings are being sent, and there are responses coming through, But currently, it says that destination host is unreachable. What you can do, instead of using these things, is actually use the sound card and that’s sort of become a lot more popular now, I quite like these because (Well you can see a lot more information there…) Yeah, I think they’re much more cool than using a sound card. It has timed out, what a surprise. (…why [unintelligible] data…) It’s showing the packets being exchanged, so they’re definitely talking to each other right now. There’s a lot of packets which are becoming out of order or being re-transmitted. Yeah, I think it has timed-out again. Let’s try using Curl. Curl is just simple command-line utility to request web pages and files from web servers. The Python web server here picked up that I requested a page. (Okay, that’s a first start, right?) Yeah, it hasn’t– AH! The page has loaded! But only in Curl–I don’t want to show you… …but I will, it’s just down here. So this is the HTML that I typed in, which is this “hello computer” file from M6PIU. So we’re going to try and load it in the web browser now. (It’s all your CSS, right?) Oh yeah, for this website, and on my personal one, it’s loaded with CSS. [ laughter ] Should have timed it, shouldn’t we? Just to be sure, opening a new tab (a lot of re-sent…) Yes, I just saw her on this little Python web server that The page was requested. Also, I got it working this morning, it was fine. So these are our… A-HA! It’s done! There you go. “Hello, computerphile,” I spelled it right, I think… I think, in the early days, it probably contributed somewhat to research towards TCP/IP and other network protocols, especially on slow connections, unreliable connections, like this. And I like to think of it as the grandfather of
GPRS and Wi-Fi and everything that works now. You would have to s-boxes here to 4-bit s boxes for example plugging into one 8-bit permutation box So the outputs of these get jumbled about a mixed up here the way an SP network works is it? looks a lot more rounded you have some of questions and things actually these numbers were chosen 3/16 5/16 or 1/16 7/16

100 thoughts on “Packet Radio (Post Apocalyptic Internet?) – Computerphile

  1. Nice! Used AX25 during the 1980 to connect to the DX-cluster via 2m band, not to block the phone line. 73 and thanks for the demo de SM0IHR/Anders

  2. I remember seeing this being used in the 90's to upload mail to the mir space station as it flew overhead, so that it could drop the mail off over the US. Using a handheld PDA (with a RS-232 serial port), a external KISS modem (TNC about the size of a packet of cigarettes) and a walkie talkie.

    It is extremely powerful, but not all that fast, because for experimentation which is what the amateur bands should be for, the speed is not all that important.

  3. For a couple of decades starting in the 80's e-mail over packet radio was the reliable way to get a message to another ham radio operator. Even the Space Shuttle and the Russian space station Mir used it. It was a lifeline for cosmonauts when they were stranded on Mir during the revolution in the 80's. Hams uploaded current news of the situation so they were able to keep informed during the crisis.

  4. Mr Jackson, I'd love to see a demonstration like this done for DMR. Where the radio talks to the repeater, ties into the internet, then back to the repeater, and finally to the radio. I know it works, just not sure how…(I spoke with a gentleman in London from here in NC) I suppose DMR owes it's existence to packet radio… Excellent explanation sir!!! KM4EVI Lenoir NC USA

  5. Yeah packet radio! My dad used to do that with his friends in his radio club. Internet 0.5 at least as I learned it. It was a niche back then. Of cause there was already phone/modem based internet. But this was free-ish. He needs a radio operator license.

  6. Cool video, unfortunately, ARIN? recently reassigned the 44/8 range and gave some of it to amazon …

    NetRange: –
    NetName: AMPRNET

    NetRange: –
    NetName: AMAZO-4

    Because amazon don't have enough addresses, obviously! …

  7. It is basicly broadcasting all info to all? But isn't there crashes within the wave carriers, i do not understand the analogue part why does not the waves crash "coincide with eachother" to be honest i do not even understand it with wifi. How can people in same "range" transmit packages simultaneous without them being garbled up. Is just the chance so low? i do not get it.

  8. Greets from W4TIA, 73's, 12:10 you can send video and pictures via fastscan tv (common on 70cm+ due to bandwidth) and slowscan TV on lower bands, it's quite interesting

  9. Been there, done that for hours and hours 🙂 Kenwood TH78E with some mods and S53MV designed TNC2-MV for 2.4k on 2m. Chat was working realy well and there was quite some traffic in S5 in… let me think… it was arround 1993, I guess.

  10. A Baofeng radio. Ha! Might as well go back to spark-gap radio! Seriously, I wouldn't trust Baofeng radios even with their batteries removed. Not even as paperweights.

  11. Perhaps one could program it in such a way that you can request a picture via AX.25, with the software then switching over to one of the many SSTV modes to send over pictures. A 320x240px image in an analog SSTV mode takes anywhere from 30 seconds to 3 minutes depending on the robustness of the mode and the color quality.

  12. An issue with the TCP IP stack in OSses like Linux is that every packet loss is regarded as a collision. TCP IP will therefore throttle down to make room. On AX25 it will slow down to a crawl because packets are lost frequently. But in this case because of the medium and not due to collisions. TCP IP stacks specificly tailored for this, like JNOS, work much better. Anyway, nice to see this here. '73 PE1DNN.

  13. @m6piu The ham radio IP net range got just a bit smaller this year, as an address block was sold (actually to Amazon) – now we still got and

  14. If you fancy doing another amateur radio computing topic how about covering QRSS, the ultimate weak signal mode. Several amateurs have used helium filled party balloons to carry QRSS beacons (typically an 8 bit microcontroller with a 100mW power amplifier) to circumnavigate the earth. They are tracked by radio receivers connected to computers using FFT to recover the weak signals from the noise.

    Anyway, thanks for an excellent video. Regards, Steve G0XAR

  15. And when we first tried to login to the distant main frame the machine crashed on the letter G. (Look it up. "Where Wizards Stay Up Late. The origins of the Internet")

  16. If someone wanted to crash this, couldn't they simply use a higher powered transmitter that simply responded with bogus ARP replies? A raspberry PI, transceiver, and amp would be all that's needed.

  17. I wanna get into ham radio, I've always liked the idea of not relying on a gatekeeper for my communications. Maybe some day I'll look into a license and setting up a station (would want to get packet radio running too; I'd wanna set it up for the router so I could plug a PC in via Ethernet and not have to configure the PC at all, assuming that's possible).

  18. Let's setup a really crappy radio network to show people who have never heard of packet radio and then snicker and giggle when it doesn't work. Really interesting …

  19. It's not 44/8 anymore sadly, ARDC sold part of it to Amazon recently and made themselves a buttload of money. Now you've got 44/9 and 44.128/10

  20. I understand why this was designed, but for the way it's actually being used in this demonstration it seems like Hellschreiber and some OCR software would do just as well to pass text back and forth.

  21. Computerphile is like a good dinner guest. Always arrives with a box of 11×15 fanfold continuous stationery under his arm. My suspicion is that he leaves the good stuff (microperforated, for that clean tear-off finish, love it) at home.

  22. If you live in the USA, DO NOT ATTEMPT TO DUPLICATE THIS PROJECT. It is illegal to transmit data like this over GMRS or FRS channels.
    Part 95 of the Code of Federal Regulations (FRS, GMRS, and amateur services):
    §95.631 (a): "A non-voice emission is limited to selective calling or tone-operated squelch tones to establish or continue voice communications."

    §95.631 (e): "No GMRS or CB transmitter shall employ a digital modulation or emission."

    §95.631 (f): "No GMRS, CB or R/C transmitter shall transmit non-voice data."
    And for FRS:
    §95.631 (d): "A non-voice emission is limited to selective calling or tone-operated squelch tones to establish or continue voice communications, digital data transmission of location information or text messaging."

    You could however, use 1900 MHz – 1920 MHz (DECT) frequencies freely, or the ISM bands 900 MHz, 2.4 GHz, and 5.8 GHz.

    Besides this being amazingly slow, you are likely jamming repeater towers in your area. If you get caught doing this in the USA, you are likely to get a fine. If you think you won't get caught, you're probably right. Unless one of your neighbors has a scanner that you constantly jam and annoy them, then they'll call it in. Here's a site where you can see the recent enforcement actions the FCC has taken:

  23. Packet was great in the early 90's so much data flying across the air. I had email nearly a decade before what we now know as the internet. I used to node hop all over the planet and send emails from thousands of miles away. We take all this for granted now but then it was mind blowing.

  24. Is the address block supposed to be part of the net writ large or is it more like the range, or is it some kind of mix of the two?

  25. We know how to do analog things for multimedia. I wonder if there's a way to "stack invert" such internet radio to drop the overhead of packetizing and just send raw analog data for a time? Similarly, this half-duplex back and forth has been solved in other applications to some degree by frequency hopping, though that's not likely done on amateur radio for various reasons. It'd be much more expensive and involved hardware, but doable for a "production" system IMO.

  26. Used to love packet radio and there are still active stations in my area with one active BBS. I first got started in packet in the early 1990's and at that time it was still fairly strong around the country but as the internet grew packet dwindled.

  27. APRS is a popular use of packet here in the US. I setup a RaspberryPi to broadcast data from a personal weather station which travels OTA to a iGate then via TCP to a server which is eventually logged by NOAA MADIS servers and used for various meteorological services. I could just send it via tcp, but the over the air hop makes it more interesting. Plus its nice seeing real-time, local WX information pop up on your 2M mobile screen cruising around town.

  28. Wasn't the internet itself made to be a response system for the apocalypse? At least, until it became centralized by a few large corporations.

  29. The reason it was taking so long for the website to work — which is clearly visible on your wireshark trace — is because the connection was being flooded by the RST packets the TCP/IP stack is sending in response to data going to a closed/timed out socket. If you could find a way to firewall out the RST packets being sent in response to every datagram received on an old socket, it would be significantly faster.

  30. "…this data…"?
    Once again, your correspondents expose a basic inexcusable ignorance.
    I cannot trust anything else that he has uttered, if he makes truly beginner-level-blunders like this?

  31. Perfect example of why the OSI and TCP/IP models are important to know. It makes understanding other networks like this one so much easier.

  32. I once listened to a long and detailed talk on a hacker conference, about how packet radio could be used in the event of a national Internet censorship/crackdown. At the end, I had one questions. 1: Given that you have a amateur ratio license and have to use your designated call sign, and such a license (usually, if not always) forbids you from transmitting encrypted information, would this not make you an immediate target for whichever government is trying to restrict the flow of information? It turned out that the whole idea was rather naive regarding how their scenario would play out. Fun hobby project, from a technology/hacking perspective, but rather dangerous in practice.

  33. I've been on again off again active on APRS but haven't played much with AX.25 yet, at least not beyond furiously cussing at it because it didn't want to work. Might have to give it another go one of these days. 73 de KG6OHK

  34. I still have a TAPR TNC-1 floating around here somewhere. AX.25 was fine but it really got interesting when I installed the KISS PROMs and could use TCP/IP. I had as much fun using that thing as I did building it. Maybe, some day, I'll get back on the air.
    73 de N7KBT

  35. When I did packet in the '90s it was just text mode… you logged into a node, then searched its node list, then jumped to another node, and so forth. Mostly just poking around, no real data changed hands… fun to see how far you could get.

  36. This is cool I always wonder if the Apocalypse came would I be smart enough to be the Tech guy in the crew. I suspect yes but without the modern internet research would be difficult. Maybe I should start downloading the entire internet before it's too late. Yes I know that is nearly impossible, I just mean downloading all the technical knowledge I can find instead of hoping it will be on the internet the next time I go look for it.

  37. Hi, great video.
    Will you be making one on AX25 Packet Radio Comms WITHOUT the burden of TCPIP?
    I used to have 2m, 1200baud, Commodore 64, homebrew TCM3105 modem and Digicom.

  38. Those earrings are antenna's so that cyborgs are prepared for the apocalypse and can keep communicating with each other. Not sure how they are a balanced dipole in the 2 meter band though, they might be tuned for another frequency that Aaron didn't tell us about. Cool vid.
    You might get away by placing dummies as antenna to avoid the interference problems and have a setup that better simulates long distance.

Leave a Reply

Your email address will not be published. Required fields are marked *