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:
- converted a PDF into a fax signal
- dialed a fax machine
- 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
- receives the phone call
- receives the fax signal
- 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.
- Gough Lui has some information about the protocol.
- Here is a document from 1993 detailing the protocol?
- According to
Group 3 protocols are the protocol? But then they also mention something about
- T.30 covers the five phases of faxing,
so it might be what I want.
- Select communication mode
- Transmit message
- Post-message processing/EOF/Confirm
- T.30 covers the five phases of faxing, so it might be what I want.
- 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
- It’s written in C++, that’s something I know!
- The author mentions something about Class 1 soft-modems?
- Nooooooo, Hylafax is only T.38, not T.30 and it wants real modems, not software!
- 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…