From d9bacacbd0a49578df64e7b22d9261833e9e7e74 Mon Sep 17 00:00:00 2001 From: Moritz Kempe Date: Sun, 4 Aug 2024 22:25:33 +0200 Subject: [PATCH] restructurized and added Debian 12 guide --- README.md | 116 ++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 96 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 2502b7b..52d55a7 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,96 @@ # Linux Fax Stack Setup (HylaFax & SIP) -- ***This guide is WIP*** -- Ubuntu 20.04 LTS VM (VirtualBox, LXC?) -- **TODO: Test on Debian / RockPi / RaspberryPi** -- **TODO: Test on Eventphone Infra** +Linux Fax Stack using Hylafax and t38modem. -
+***THIS GUIDE IS WIP*** -## Setup t38modem +This guide was created using information from the opalvoid wiki (http://wiki.opalvoip.org/index.php?n=Main.HomePage) -- **TODO: Package t38modem with service files and config** +## Softwarestack -## Opal +### ptlib +(legacy) library for doing a little bit of everything. -- http://wiki.opalvoip.org/index.php?n=Main.HomePage +### Opal +Voice codec used by e.g. mumble. + +### t38modem +Emulates a serial modem from SIP connetion + +### Hylafax +Enterprise grade software, managing physical and emulated modems. + +Has some problems: https://github.com/lexbailey/compilerfax/blob/main/hylafax_is_broken + +## Operating Systems +Unfortunately this software stack uses a lot of legacy software. Because of this, this guide was only tested on specific software versions + +### Debian 12 Bookworm +For Debian 12, we´ll only install dependencies which are hard requirements. +For this guide we'll use ptlib 2.18.6 and opal 3.18.6. + +#### Installing Requirements +First we'll need some packages +```bash +apt-get install build-essential git wget pkg-config libssl-dev libsrtp2-dev -y +``` +#### Download sourcecode +Versions: +- libpt (2.18.6) https://sourceforge.net/projects/opalvoip/files/v3.18 Cygni/Stable 6/ +- opal (3.18.6) https://sourceforge.net/projects/opalvoip/files/v3.18 Cygni/Stable 6/ +- t38mdem (4.6.2) https://github.com/hehol/t38modem/releases/tag/4.6.2 + +#### ptlib +```bash +./configure +make +make install +''' + +#### opal +```bash +./configure +make -j5 +make runtest +make install +''' + +#### t38modem +If you are getting error about `-1` not being able to be casted to a `long unsigned int` due to `-Wnarrowing` inside `dle.cxx`, you can add `-Wno-narrowing` after the `CPPFLAGS` in the Makefile to disable this error + +'''bash +git clone https://github.com/hehol/t38modem +cd t38modem +make +''' + +If running the t38modem executable, you should run these commands +```bash +cp /usr/local/lib/libpt.so.2.18.6 /lib +cp /usr/local/lib/libopal.so.3.18.6 /lib +``` + +To install t38modem run +```bash +cp t38modem /bin/t38modem +``' + +### Ubuntu 20.04 LTS +Was tested on Ubuntu 20.04 LTS VM (VirtualBox, LXC?) + +You can relies heavily on http://wiki.opalvoip.org/index.php?n=Main.HomePage + +Versions: +- libpt (2.18.6) https://sourceforge.net/projects/opalvoip/files/v3.18 Cygni/Stable 6/ +- opal (3.18.6) https://sourceforge.net/projects/opalvoip/files/v3.18 Cygni/Stable 6/ +- t38mdem (4.6.2) https://github.com/hehol/t38modem/releases/tag/4.6.2 + +Follow http://wiki.opalvoip.org/index.php?n=Main.BuildingPTLibUnix and http://wiki.opalvoip.org/index.php?n=Main.HomePage **but** - Don't use `libavformat-dev` -> Compile error in Opal -- https://sourceforge.net/projects/opalvoip/files/ -- Version 3.18.6 -- **TODO: Test out other versions** -- `.tar.bz2` files for *nix +- Configure script needs `pkg-config` to be installed to find ptlib install +- On SourceForge downloads `.tar.bz2` files for *nix -### Build PTLib +#### Build PTLib - Version 2.18.6 - Dependency of Opal, bundled with Opal source code (SourceForge) @@ -31,7 +101,7 @@ sudo apt install \ g++ git make autoconf libpcap-dev libexpat1-dev libssl-dev libsasl2-dev libldap2-dev \ unixodbc-dev liblua5.3-dev libv8-dev libncurses-dev libsdl2-dev \ - libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev + libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev pkg-config ``` - PTLib will be installed in the `/usr/local` tree -> set `PKG_CONFIG_PATH` to be findable (compile time) @@ -50,7 +120,7 @@ make sudo make install ``` -### Build Opal +#### Build Opal - Version 3.18.6 - http://wiki.opalvoip.org/index.php?n=Main.BuildingOpalUnix @@ -76,11 +146,11 @@ make sudo make install ``` -## t38modem +#### t38modem - https://github.com/hehol/t38modem, Version 4.6.2 - - Could also use https://github.com/T38Modem/t38modem, not as maintained -- If you are getting error about `-1` not being able to be casted to a `long unsigned int` due to `-Wnarrowing` inside `dle.cxx`, you can add `-Wno-narrowing` to the `CPPFLAGS` in the Makefile to disable this error + - https://github.com/T38Modem/t38modem could also be used, but seems to be not as maintained +- If you are getting error about `-1` not being able to be casted to a `long unsigned int` due to `-Wnarrowing` inside `dle.cxx`, you can add `-Wno-narrowing` after the `CPPFLAGS` in the Makefile to disable this error ```bash cd t38modem-x.y.z/ @@ -90,12 +160,13 @@ sudo cp ./t38modem /usr/local/bin - t38modem can only find Opal if `LD_LIBRARY_PATH` and `PTLIBPLUGINDIR` are environment variables to the program -### Init script +#### Init script - To automatically start t38modem, you need to create Systemd services, as well as start and stop scripts - script is adapted from https://web.archive.org/web/20111231021042/https://www.foriamroot.org/hylafax-6-0-debian-or-ubuntu-t38modem-1-0-asterisk-1-6/ - `sudo mkdir -p /etc/t38modem/bin/` +## Using t38modem (requires systemd) ```bash #!/bin/bash # /etc/t38modem/bin/run @@ -252,3 +323,8 @@ FaxMaster: $USER # replace with fax admin account ## FaxDispatch - https://legacy.hylafax.org/content/Advanced_Permissions_with_6.0 + +## TODO +- **TODO: Test on Debian / RockPi / RaspberryPi** +- **TODO: Test on Eventphone Infra** +- **TODO: Package t38modem with service files and config**