Can we turn smartphones into fax machines?

At today’s CPARC meeting, I had an extremely stupid idea. If fax is just audio over phone, what if you had a smartphone app that:

  1. converted a PDF into a fax signal
  2. dialed a fax machine
  3. sent the fax signal over the phone call?

But then it gets better. What if on the receiving end, it wasn’t a fax machine, but another phone? So that phone

  1. receives the phone call
  2. receives the fax signal
  3. decodes the fax into PDF

This seems like a completely awful idea, so much so that I kinda want to do it. Some preliminary research I’ve done:

  • There are so-called “fax sending apps” for Android phones, but those are lame. They aren’t doing the actual dialing, transmission, and decoding; they’re just calling some API on someone else’s machine to do it for them.
  • “Group 3,” or “G3” is either a machine or a mimetype. I’m not too sure which it is.
  • According to Techopedia, Group 3 protocols are the protocol? But then they also mention something about T.30?
  • Radiofax is a thing. Fax is kinda like SSTV but with multiple pages.
  • Oh hey, there’s a StackOverflow page about this.
    • It says T.4 and T.30 are the protocols I want.
  • Based on this NetworkWorld article, T.4, T.6, and T.30 are the protocols I want. I suppose G3 is just the descriptor for the machine, and Group 3 protocols are those protocols.
    • Sadly it has no images, even on the earliest archive.
    • T.30 is the whole enchilada: handshake, negotiation, sending…
    • T.4 is about fax pages (MH/Modified Huffman and MR/Modified Read) and T.6 (MMR/Modified Modified Read lmao)
  • So we do want the ITU’s T.30 specification, with PDFs in multiple languages. Unfortunately, these are extremely long (322 pages!)
  • But then based on this Superuser page, image/g3fax is what I want because that’s the whole recording of the fax?
    • However, fax is a two-way protocol with negotiation, so if I simply implement a .g3 decoder then I can’t make a software fax machine.
    • And there’s a link back to Gough Lui with sample fax audios.
  • T.38 is a protocol for fax over IP. Not exactly what we want… is it?
    • This protocol is essentially a way to wrap a T.30 fax call into TCP and UDP packets while also sort of “adapting” the protocol around it into something suited for the internet. Like VoIP but for Fax. Thus, it’s called FoIP.
    • Part of the protocol “is to ‘fool’ the terminal into ‘thinking’ that it’s communicating directly with another T.30 terminal” in the event of packet loss?
  • HylaFAX+ is an open source T30 thing???
  • A lot of fax libraries seem to cost money. That sucks.

Ugh, it’s looking like I just have to implement my own soft fax library…