Frairable/README.md
2024-01-07 04:47:57 +01:00

3.1 KiB

Frairable

Free your Airable-hindered Frontier Smart radio, at least somewhat.

What? Why?

Some newer radios (you know, those boxes with speakers and antennas playing music) built around Frontier Smart no longer use the Frontier Nuvola services, and thus sadly, KIMB-technologies/Radio-API no longer works with them. Instead, they seem to use airable.wifiradiofrontier.com, which comes with its own quirks:

  • Devices no longer "log in" the old way and don't expose an unique ID.
  • Every request uses a fresh authorization header.
    • You may have been struck by a 403 while trying to access that Airable link. Say goodbye to sniffing around on your own, and goodbye to replaying requests easily!
  • Marking stations as favs and adding new stations is now handled on the device itself, instead of being handled by the server.
  • API requests are performed through HTTPS (port 443) instead of HTTP (port 80)...
    • ... yet (at least with the device I own,) you can throw any certificate at the device and it will eat it up. MITM ahoy!

This repo contains a single php file that sits in between your radio and the Airable API, adding new menu entries to the server's responses.

How can I use this?

The way I've set it up on my Raspberry Pi 4b is absolutely cursed and there's certainly better ways to do it, but it's 04:34am as I'm clacking my keys right now and I want sleep, so here's my setup:

  • Home Assistant OS
    • Yes, I know running custom software outside of addons (which are just neatly packaged docker containers with special rules) isn't supported, but if it works in such a restrictive environment, then it surely works everywhere.
  • linuxserver/nginx
    • Easy to set up, supports a wide range of platforms, and I don't need any of the fancyness that comes with linuxserver/swag (certbot) as it sits in my local network.
    • The default config uses index.php for all requests, which is exactly what we want! Yay!
  • Plop index.php and the radios dir into www (or set up a mount for it).
  • In your favourite DNS adblocker (Pi-hole or AdGuard Home), redirect airable.wifiradiofrontier.com to your device's IP.
  • Put a web radio into the radios dir (using my existing config as an example), or create your own:
    • Icecast or another web radio server
      • I'm personally using AzuraCast, which uses Icecast under the hood, but with arm64 support!
    • butt
      • This is really just if you want to f.e. stream your PC audio to your internet radio.
  • ???
  • Profit!

TL;DR: Set up a web server on ports 80 and 443, make it use index.php for every request, play around with the radios folder.

Any hints for following your footsteps?

  • mitmweb --set connection_strategy=lazy --ssl-insecure --mode reverse:https://airable.wifiradiofrontier.com@443
  • The dumps folder contains some things which might get useful if Airable ever goes down / if anyone wants to come up with a fully self-hosted replacement.