Category Archives: VoIP

VoIP Server

Using FreePBX instead of the FritzBox as your phone server

Most private landline phone users in Luxembourg use a FritzBox to connect their phones (often DECT phones) to the national telephone network, supposed they still have a landline phone in their home. Although that the FritzBox really does an excellent job at this and is very easy to use, I always felt that I wanted to have more control over my VoIP server. The path to go was for me to move over to locally hosted FreePBX server.

So I started installing FreePBX (16) in a virtual machine on my ProxMox server, providing it with decent resources (64 GB Disk, 4 GB RAM, 2 cores) and put it into the isolated Phone VLAN in my network, together with my VoIP phones (and my FritzBox phone server).

In order to get started with a single phone, you need to:

Caution

I was experimenting with FreePBX using a second VoIP number and in the same time keeping my other number online through the Fritzbox. This allowed me to do outbound calls on the FreePBX attached phone using the second number, but I was unable to receive inbound calls on that line. When calling inbound from the cellphone, the line appeared ringing, but no phone (extension) received the call. No entries were found in the FreePBX log file neither. So I assume that running the Fritzbox and the FreePBX system in parallel in a home network seems to lead to routing issues. The Fritzbox seemed to be the master receiver, as the other VoIP number still worked fine. This is all hypothetical, but in my case, things didn’t work. Shutting down the Fritzbox, and waiting for a few minutes, allowed the FreePBX system to receive the incoming calls too.

Configuring the firewall for FreePBX

Internal firewall

Go to the Connectivity menu, submenu Firewall. I guess you should run the Wizard to accomplish a basic configuration. Anyway, Make sure that the FreePBX main interface (eth0) is defined as Local(Local trusted traffic) under the Interfaces tab.

The networks tab should include all the devices that should be able to contact the FreePBX server:

  • all your VoIP phones
  • potential software phones
  • your main computer (to manage the FreePBX system).
  • Don’t forget to allow your external SIP server (uplink) to contact your FreePBX!

Network firewall

I needed to define a Port Forwarding rule in my router’s (Unifi Dream Machine Pro) firewall to allow the external SIP server (my uplink) to contact my internal FreePBX server. I specifically allow the external server’s IP to access the IP of my FreePBX on port 5060 on both (UDP, TCP) protocols.

It is also recommended to disable the Conntrack Modules in the router that handle SIP traffic (H.323 and SIP), although it might help if you are in a double-NAT network.

Define an inbound route in FreePBX

Go to the Connectivity menu, submenu Inbound Routes. Click the button: Add Inbound Route.

Add a route Description, a DID Number (important if you use several incoming phone numbers) and define Set Destination to an Extension or to a Ring Group (if you have defined one).

Example of an inbound route

Connect a Yealink T46S phone to FreePBX

Create the account / line

Open your VoIP phone’s configuration interface. Go to the Accounts tab. Select the next free account and enter the following information:

Line active (enabled), the Label, the Display Name, the Register Name, the Username and Password of your extension, the Server Host (IP address of your FreePBX server), Port 5060 and hit confirm.

If everything went well, the Register Status should be switching from Registering to Registered.

Yealink T46S

Don’t forget to define a Line Key in the Dsskey tab to make the line visible and usable on your phone. As a Type, use Line, leave the Value on Default, define the Label to show your phone number or whatever you want to see on your phone, and as Line use the account number of the line you created above, in my case: Line 3.

Permit access to Voicemail

To add a voicemail button to your phone, in the Dsskey tab, define a Line Key that has as Type: BLF, as value *97, label it Voice Mail and select your Line as the Line (again for me: Line 3). After hitting the Confirm button, a line key button shows up with a green light (or red, if you already have a message). Of course, this only works if your voicemail is activated for this extension in the FreePBX.

You can also add a button for the general voicemail of your FreePBX system. This mailbox is normally defined ass extension 6000. In this case, the value for the line key has to be *986000. *98 allows to call a voice mailbox of another user. *97 goes to the mailbox of the extension you are using.

Configuration of a general and personal voicemail number

Problem solving

If the phone does not register, make sure the entered configuration data is correct and that the firewalls (FreePBX & your router’s firewall, in case you are on a different LAN or VLAN) allow for the connection to happen.

If you want to see the communication between your phone and your FreePBX server, connect with SSH to the FreePBX box and run the following command:

sngrep

Define a SIP trunk in FreePBX

Go to the Connectivity menu, Trunks submenu. Click Add trunk. Add a SIP (chan_pjsip) Trunk.

Define a Trunk Name and an Outbound CallerID.

Define the Dialed Number Manipulation Rules which defines what numbers can be called. Be careful which number structures you allow, as some numbers might become very expensive.

In the pjsip Settings under General, fill out the Username, the Auth username, the Secret and the SIP Server. These information should have been given to you by your VoIP provider. The SIP Server port is mostly 5060. Authentication should be set to Outbound. If your external SIP server has a fixed IP or hostname (and you are on a public dynamic IP), then Registration should be set to Send.

SIP Trunk configuration

I also filled out the advanced tab information for Contact User, From Domain and From User. Not sure if this is absolutely necessary, but as iI was experimenting a lot to get things going, it is filled out in my case.

When you are done, hit Submit and Apply config.

Configure email service for FreePBX

We will configure FreePBX to send emails through a Gmail SMTP relay. FreePBX will use Postfix of the underlying Redhat Linux system to achieve this.

Create a Google app password

Login to your google account with the email address you want to use for sending the notifications from your FreePBX system. On the Google account management page, click on Security, then on 2-Step-Verification. At the end of that page, create an App Password for your FreePBX system.

Create a password file in CLI

Create or edit the sasl_passwd file:

sudo nano /etc/postfix/sasl_passwd 

Add the following line to it:

[smtp.gmail.com]:587 my_email_address@gmail.com:My Google App Password

You do not need to worry about the spaces in the app password. Then hash map the password file:

sudo postmap /etc/postfix/sysl_passwd

After this command ran, you will see a sasl_passwd.db file in /etc/postfix. Permission son this file should be root:root.

Configure Postfix to use the Gmail relay host

Add the following lines to the Postfix main.cf file:

sudo nano /etc/postfix/main.cf
myhostname = freepbx.my.domain
relayhost = [smtp.gmail.com]:587

#Enable SASL authentication
smtp_sasl_auth_enable = yes

#Disallow methods that allow anonymous authentication
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_tls_security_level = encrypt

# Location of sasl_passwd
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd

Now restart your postfix service:

nano systemctl restart postfix

Test your Postfix installation

echo "This is a test email" | mail -s "Test mail" destination@email.address

Optional: force Postfix to rewrite your address

Sometimes messages are rejected if the from user and the sending user don’t match up. If this happens, you have to add the following lines to the generic configuration file:

sudo nano /etc/postfix/generix
root my.sending@email.address 
root@localhost my.sending@email.address 
root@localhost.localdomain my.sending@email.address 
root@freepbx my.sending@email.address 
root@freepbx.localdomain my.sending@email.address 
asterisk my.sending@email.address 
asterisk@localhost my.sending@email.address 
asterisk@localhost.localdomain my.sending@email.address 
asterisk@freepbx my.sending@email.address 
asterisk@freepbx.localdomain my.sending@email.address
vm@asterisk my.sending@email.address

Hash map the generic file:

postmap /etc/postfix/generic

You have to add the following line to thew main.cf file:

smtp_generic_maps = hash:/etc/postfix/generic

Don’t forget to restart the Postfix service.

Test your email from FreePBX

Go to the Admin menu, User Manager submenu, select the user you want to send an email to and hit the Send Email button.

Admin / User Manager

Don’t forget to associate an email address to the user.

Asterisk commands

Asterisk command line tool

In a SSH shell, enter the asterisk command line by:

asterisk -rvvv

All SIP Trunk commands at a glance:

freepbx*CLI> core show help
!                              -- Execute a shell command
acl show                       -- Show a named ACL or list all named ACLs
aeap show client               -- Show AEAP client configuration by id
aeap show clients              -- Show all AEAP client configurations
ael reload                     -- Reload AEL configuration
ael set debug {read|tokens|macros|contexts|off} -- Enable AEL debugging flags
agi dump html                  -- Dumps a list of AGI commands in HTML format
agi exec                       -- Add AGI command to a channel in Async AGI
agi set debug [on|off]         -- Enable/Disable AGI debugging
agi show commands [topic]      -- List AGI commands or specific help
aoc set debug                  -- enable cli debugging of AOC messages
ari mkpasswd                   -- Encrypts a password
ari set debug                  -- Enable/disable debugging of an ARI application
ari show apps                  -- List registered ARI applications
ari show app                   -- Display details of a registered ARI application
ari show status                -- Show ARI settings
ari show users                 -- List ARI users
ari show user                  -- List single ARI user
bridge kick                    -- Kick a channel from a bridge
bridge show all                -- List all bridges
bridge show                    -- Show information about a bridge
bridge technology show         -- List registered bridge technologies
bridge technology {suspend|unsuspend} -- Suspend/unsuspend a bridge technology
cc cancel [core|all]           -- Kill a CC transaction
cc report status               -- Reports CC stats
cdr set debug [on|off]         -- Enable debugging in the CDR engine
cdr show active                -- Display active CDRs for channels
cdr show status                -- Display the CDR status
cdr submit                     -- Posts all pending batched CDR data
cel show status                -- Display the CEL status
channel originate              -- Originate a call
channel redirect               -- Redirect a call
channel request hangup         -- Request a hangup on a given channel
cli check permissions          -- Try a permissions config for a user
cli reload permissions         -- Reload CLI permissions config
cli show permissions           -- Show CLI permissions
confbridge kick                -- Kick participants out of conference bridges.
confbridge list                -- List conference bridges and participants.
confbridge lock                -- Lock a conference.
confbridge mute                -- Mute participants.
confbridge record start        -- Start recording a conference
confbridge record stop         -- Stop recording a conference.
confbridge show menu           -- Show a conference menu
confbridge show menus          -- Show a list of conference menus
confbridge show profile bridge -- Show a conference bridge profile.
confbridge show profile bridges -- Show a list of conference bridge profiles.
confbridge show profile user   -- Show a conference user profile.
confbridge show profile users  -- Show a list of conference user profiles.
confbridge unlock              -- Unlock a conference.
confbridge unmute              -- Unmute participants.
config list                    -- Show all files that have loaded a configuration file
config reload                  -- Force a reload on modules using a particular configuration file
config show help               -- Show configuration help for a module
core abort shutdown            -- Cancel a running shutdown
core clear profile             -- Clear profiling info
core ping taskprocessor        -- Ping a named task processor
core reload                    -- Global reload
core reset taskprocessor       -- Reset a named task processor's stats
core reset taskprocessors      -- Reset all task processors' stats
core restart gracefully        -- Restart Asterisk gracefully
core restart now               -- Restart Asterisk immediately
core restart when convenient   -- Restart Asterisk at empty call volume
core set debug category        -- Enable/disable debugging categories
core set debug                 -- Set level of debug chattiness
core set debug channel         -- Enable/disable debugging on a channel
core set trace                 -- Set level of trace chattiness
core set verbose               -- Set level of verbose chattiness
core show applications [like|describing] -- Shows registered dialplan applications
core show application          -- Describe a specific dialplan application
core show calls [uptime]       -- Display information on calls
core show channels [concise|verbose|count] -- Display information on channels
core show channeltypes         -- List available channel types
core show channeltype          -- Give more details on that channel type
core show channel              -- Display information on a specific channel
core show codecs [audio|video|image|text] -- Displays a list of registered codecs
core show codec                -- Shows a specific codec
core show config mappings      -- Display config mappings (file names to config engines)
core show file formats         -- Displays file formats
core show functions [like]     -- Shows registered dialplan functions
core show function             -- Describe a specific dialplan function
core show hanguphandlers all   -- Show hangup handlers of all channels
core show hanguphandlers       -- Show hangup handlers of a specified channel
core show help                 -- Display help list, or specific help on a command
core show hints                -- Show dialplan hints
core show hint                 -- Show dialplan hint
core show image formats        -- Displays image formats
core show license              -- Show the license(s) for this copy of Asterisk
core show profile              -- Display profiling info
core show settings             -- Show some core settings
core show sounds               -- Shows available sounds
core show sound                -- Shows details about a specific sound
core show switches             -- Show alternative switches
core show sysinfo              -- Show System Information
core show taskprocessor alerted subsystems -- List task processor subsystems in alert
core show taskprocessors [like] -- List instantiated task processors and statistics
core show threads              -- Show running threads
core show translation          -- Display translation matrix
core show uptime [seconds]     -- Show uptime information
core show version              -- Display version info
core show warranty             -- Show the warranty (if any) for this copy of Asterisk
core stop gracefully           -- Gracefully shut down Asterisk
core stop now                  -- Shut down Asterisk immediately
core stop when convenient      -- Shut down Asterisk at empty call volume
core waitfullybooted           -- Wait for Asterisk to be fully booted
dahdi create channels          -- Create channels
dahdi destroy channels         -- Destroy channels
dahdi restart                  -- Fully restart DAHDI channels
dahdi set dnd                  -- Sets/resets DND (Do Not Disturb) mode on a channel
dahdi set hwgain {rx|tx}       -- Set hardware gain on a channel
dahdi set swgain {rx|tx}       -- Set software gain on a channel
dahdi show cadences            -- List cadences
dahdi show channels [group|context] -- Show active DAHDI channels
dahdi show channel             -- Show information on a channel
dahdi show status              -- Show all DAHDI cards status
dahdi show version             -- Show the DAHDI version in use
database del                   -- Removes database key/value
database deltree               -- Removes database keytree/values
database get                   -- Gets database value
database put                   -- Adds/updates database value
database query                 -- Run a user-specified query on the astdb
database show                  -- Shows database contents
database showkey               -- Shows database contents
devstate change                -- Change a custom device state
devstate list                  -- List currently known custom device states
dialplan add extension         -- Add new extension into context
dialplan add ignorepat         -- Add new ignore pattern
dialplan add include           -- Include context in other context
dialplan debug                 -- Show fast extension pattern matching data structures
dialplan eval function         -- Evaluate dialplan function
dialplan locks show            -- List func_lock locks.
dialplan reload                -- Reload extensions and *only* extensions
dialplan remove context        -- Remove a specified context
dialplan remove extension      -- Remove a specified extension
dialplan remove ignorepat      -- Remove ignore pattern from context
dialplan remove include        -- Remove a specified include from context
dialplan set chanvar           -- Set a channel variable
dialplan set extenpatternmatchnew false -- Use the Old extension pattern matching algorithm.
dialplan set extenpatternmatchnew true -- Use the New extension pattern matching algorithm.
dialplan set global            -- Set global dialplan variable
dialplan show                  -- Show dialplan
dialplan show chanvar          -- Show channel variables
dialplan show globals          -- Show global dialplan variables
dnsmgr refresh                 -- Performs an immediate refresh
dnsmgr reload                  -- Reloads the DNS manager configuration
dnsmgr status                  -- Display the DNS manager status
fax set debug {on|off}         -- Enable/Disable FAX debugging on new FAX sessions
fax show capabilities          -- Show the capabilities of the registered FAX technology modules
fax show session               -- Show the status of the named FAX sessions
fax show sessions              -- Show the current FAX sessions
fax show settings              -- Show the global settings and defaults of both the FAX core and technology modules
fax show stats                 -- Summarize FAX session history
fax show version               -- Show versions of FAX For Asterisk components
features show                  -- Lists configured features
file convert                   -- Convert audio file
g729 show hostid               -- Show G.729 Host-ID
g729 show licenses             -- Show G.729 Licenses and Usage
g729 show version              -- Show G.729 Module Version
group show channels            -- Display active channels with group(s)
http show status               -- Display HTTP server status
iax2 provision                 -- Provision an IAX device
iax2 prune realtime            -- Prune a cached realtime lookup
iax2 reload                    -- Reload IAX configuration
iax2 set debug {on|off|peer}   -- Enable/Disable IAX debugging
iax2 set debug jb {on|off}     -- Enable/Disable IAX jitterbuffer debugging
iax2 set debug trunk {on|off}  -- Enable/Disable IAX trunk debugging
iax2 set mtu                   -- Set the IAX systemwide trunking MTU
iax2 show cache                -- Display IAX cached dialplan
iax2 show callnumber usage     -- Show current entries in IP call number limit table
iax2 show channels             -- List active IAX channels
iax2 show firmware             -- List available IAX firmware
iax2 show netstats             -- List active IAX channel netstats
iax2 show peer                 -- Show details on specific IAX peer
iax2 show peers                -- List defined IAX peers
iax2 show provisioning         -- Display iax provisioning
iax2 show registry             -- Display IAX registration status
iax2 show stats                -- Display IAX statistics
iax2 show threads              -- Display IAX helper thread info
iax2 show users [like]         -- List defined IAX users
iax2 test losspct              -- Set IAX2 incoming frame loss percentage
iax2 unregister                -- Unregister (force expiration) an IAX2 peer from the registry
indication add                 -- Add the given indication to the country
indication remove              -- Remove the given indication from the country
indication show                -- Display a list of all countries/indications
keys init                      -- Initialize RSA key passcodes
keys show                      -- Displays RSA key information
local show channels            -- List status of local channels
logger add channel             -- Adds a new logging channel
logger mute                    -- Toggle logging output to a console
logger reload                  -- Reopens the log files
logger remove channel          -- Removes a logging channel
logger rotate                  -- Rotates and reopens the log files
logger set level {DEBUG|TRACE|NOTICE|WARNING|ERROR|VERBOSE|DTMF} {on|off} -- Enables/Disables a specific logging level for this console
logger show channels           -- List configured log channels
logger show levels             -- List configured log levels
malloc trim                    -- Return excess memory to the OS
manager reload                 -- Reload manager configurations
manager set debug [on|off]     -- Show, enable, disable debugging of the manager code
manager show command           -- Show a manager interface command
manager show commands          -- List manager interface commands
manager show connected         -- List connected manager interface users
manager show eventq            -- List manager interface queued events
manager show events            -- List manager interface events
manager show event             -- Show a manager interface event
manager show settings          -- Show manager global settings
manager show users             -- List configured manager users
manager show user              -- Display information on a specific manager user
media cache create             -- Create an item in the media cache
media cache delete             -- Remove an item from the media cache
media cache refresh            -- Refresh an item in the media cache
media cache show all           -- Show all items in the media cache
media cache show               -- Show a single item in the media cache
meetme kick                    -- Kick a conference or a user in a conference.
meetme list                    -- List all conferences or a specific conference.
meetme {lock|unlock}           -- Lock or unlock a conference to new users.
meetme {mute|unmute}           -- Mute or unmute a conference or a user in a conference.
mfcr2 call files [on|off]      -- Enable/Disable MFC/R2 call files
mfcr2 destroy link             -- Destroy given MFC/R2 link
mfcr2 set blocked              -- Reset MFC/R2 channel forcing it to BLOCKED
mfcr2 set debug                -- Set MFC/R2 channel logging level
mfcr2 set idle                 -- Reset MFC/R2 channel forcing it to IDLE
mfcr2 show channels [group|context] -- Show MFC/R2 channels
mfcr2 show links               -- Show MFC/R2 links
mfcr2 show variants            -- Show supported MFC/R2 variants
mfcr2 show version             -- Show OpenR2 library version
mixmonitor {start|stop|list}   -- Execute a MixMonitor command
module load                    -- Load a module by name
module refresh                 -- Completely unloads and loads a module by name
module reload                  -- Reload configuration for a module
module show [like]             -- List modules and info
module unload                  -- Unload a module by name
moh reload                     -- Reload MusicOnHold
moh show classes               -- List MusicOnHold classes
moh show files                 -- List MusicOnHold file-based classes
moh unregister class           -- Unregister realtime MusicOnHold class
no debug channel               -- Disable debugging on channel(s)
odbc show                      -- List ODBC DSN(s)
parking show                   -- Show a parking lot or a list of all parking lots.
pjproject set log level {default|0|1|2|3|4|5|6} -- Set the maximum active pjproject logging level
pjproject show buildopts       -- Show the compiled config of the pjproject in use
pjproject show log level       -- Show the maximum active pjproject logging level
pjproject show log mappings    -- Show pjproject to Asterisk log mappings
pjsip dump endpt               -- Dump the res_pjsip endpt internals
pjsip export config_wizard primitives [to] -- Export config wizard primitives
pjsip list aors                -- List PJSIP Aors
pjsip list auths               -- List PJSIP Auths
pjsip list channels            -- List PJSIP Channels
pjsip list ciphers             -- List available OpenSSL cipher names
pjsip list contacts            -- List PJSIP Contacts
pjsip list endpoints           -- List PJSIP Endpoints
pjsip list identifies          -- List PJSIP Identifies
pjsip list registrations       -- List PJSIP Registrations
pjsip list subscriptions {inbound|outbound} [like] -- List active inbound/outbound subscriptions
pjsip list transports          -- List PJSIP Transports
pjsip qualify                  -- Send an OPTIONS request to a PJSIP endpoint
pjsip reload qualify aor       -- Synchronize the PJSIP Aor qualify options
pjsip reload qualify endpoint  -- Synchronize the qualify options for all Aors on the PJSIP endpoint
pjsip send notify              -- Send a NOTIFY request to a SIP endpoint
pjsip send register            -- Registers an outbound registration target
pjsip send unregister          -- Unregisters outbound registration target
pjsip set history {on|off|clear} -- Enable/Disable PJSIP History
pjsip set logger {on|off|host|add|method|methodadd|verbose|pcap} -- Enable/Disable PJSIP Logger Output
pjsip show aors                -- Show PJSIP Aors
pjsip show aor                 -- Show PJSIP Aor
pjsip show auths               -- Show PJSIP Auths
pjsip show auth                -- Show PJSIP Auth
pjsip show channels            -- Show PJSIP Channels
pjsip show channel             -- Show PJSIP Channel
pjsip show channelstats        -- Show PJSIP Channel Stats
pjsip show contacts            -- Show PJSIP Contacts
pjsip show contact             -- Show PJSIP Contact
pjsip show endpoints           -- Show PJSIP Endpoints
pjsip show endpoint            -- Show PJSIP Endpoint
pjsip show history             -- Display PJSIP History
pjsip show identifiers         -- List registered endpoint identifiers
pjsip show identifies          -- Show PJSIP Identifies
pjsip show identify            -- Show PJSIP Identify
pjsip show qualify aor         -- Show the PJSIP Aor current qualify options
pjsip show qualify endpoint    -- Show the current qualify options for all Aors on the PJSIP endpoint
pjsip show registrations       -- Show PJSIP Registrations
pjsip show registration        -- Show PJSIP Registration
pjsip show scheduled_tasks     -- Show pjsip scheduled tasks
pjsip show settings            -- Show global and system configuration options
pjsip show subscription {inbound|outbound} -- Show active subscription details
pjsip show subscriptions {inbound|outbound} [like] -- Show active inbound/outbound subscriptions
pjsip show transport-monitors  -- Show pjsip transport monitors
pjsip show transports          -- Show PJSIP Transports
pjsip show transport           -- Show PJSIP Transport
pjsip show unidentified_requests -- Show PJSIP Unidentified Requests
pjsip show version             -- Show the version of pjproject in use
presencestate change           -- Change a custom presence state
presencestate list             -- List currently know custom presence states
pri destroy span               -- Destroy a PRI span
pri service disable channel    -- Remove a channel from service
pri service enable channel     -- Return a channel to service
pri set debug {on|off|hex|intense|0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15} span -- Enables PRI debugging on a span
pri set debug file             -- Sends PRI debug output to the specified file
pri show channels              -- Displays PRI channel information
pri show debug                 -- Displays current PRI debug settings
pri show spans                 -- Displays PRI span information
pri show span                  -- Displays PRI span information
pri show version               -- Displays libpri version
queue add member               -- Add a channel to a specified queue
queue priority caller          -- Change priority caller on queue
queue reload {parameters|members|rules|all} -- Reload queues, members, queue rules, or parameters
queue remove member            -- Removes a channel from a specified queue
queue reset stats              -- Reset statistics for a queue
queue set penalty              -- Set penalty for a channel of a specified queue
queue set ringinuse            -- Set ringinuse for a channel of a specified queue
queue show                     -- Show status of a specified queue
queue show rules               -- Show the rules defined in queuerules.conf
queue {pause|unpause} member   -- Pause or unpause a queue member
realtime destroy               -- Delete a row from a RealTime database
realtime load                  -- Used to print out RealTime variables.
realtime mysql cache           -- Shows cached tables within the MySQL realtime driver
realtime mysql status          -- Shows connection information for the MySQL RealTime driver
realtime store                 -- Store a new row into a RealTime database
realtime update                -- Used to update RealTime variables.
realtime update2               -- Used to test the RealTime update2 method
rtcp set debug {on|off|ip}     -- Enable/Disable RTCP debugging
rtcp set stats {on|off}        -- Enable/Disable RTCP stats
rtp set debug {on|off|ip}      -- Enable/Disable RTP debugging
rtp show settings              -- Display RTP settings
say load [new|old]             -- Set or show the say mode
siren14 show version           -- Show Siren14 Module Version
siren7 show version            -- Show Siren7 Module Version
sla show stations              -- Show SLA Stations
sla show trunks                -- Show SLA Trunks
sorcery memory cache dump      -- Dump all objects within a sorcery memory cache
sorcery memory cache expire    -- Expire a specific object or ALL objects within a sorcery memory cache
sorcery memory cache populate  -- Clear and populate the sorcery memory cache with objects from the backend
sorcery memory cache show      -- Show sorcery memory cache information
sorcery memory cache stale     -- Mark a specific object or ALL objects as stale within a sorcery memory cache
ss7 mtp3                       -- Send an NET MNG message
ss7 reset cic                  -- Resets the given CIC
ss7 reset group                -- Resets the given CIC range
ss7 restart mtp3               -- Restart a link
ss7 set debug {on|off} linkset -- Enables SS7 debugging on a linkset
ss7 {block|unblock} cic        -- Blocks/Unblocks the given CIC
ss7 {reset|block|unblock} linkset -- Resets/Blocks/Unblocks all CICs on a linkset
ss7 {block|unblock} group      -- Blocks/Unblocks the given CIC range
ss7 show calls                 -- Show ss7 calls
ss7 show channels              -- Displays SS7 channel information
ss7 show cics                  -- Show cics on a linkset
ss7 show linkset               -- Shows the status of a linkset
ss7 show version               -- Displays libss7 version
stasis show topics             -- Show all topics
stasis show topic              -- Show topic
stir_shaken show certificate   -- Show stir/shaken certificate configuration by id
stir_shaken show certificates  -- Show all stir/shaken certificate configurations
stir_shaken show general       -- Show stir/shaken general configuration
stir_shaken show profile       -- Show stir/shaken profile by id
stir_shaken show profiles      -- Show all stir/shaken profiles
stir_shaken show store         -- Show stir/shaken store configuration by id
stun set debug {on|off}        -- Enable/Disable STUN debugging
timing test                    -- Run a timing test
transcoder show                -- Display DAHDI transcoder utilization.
udptl set debug {on|off|ip}    -- Enable/Disable UDPTL debugging
udptl show config              -- Show UDPTL config options
ulimit                         -- Set or show process resource limits
voicemail forward              -- Forward message to another folder
voicemail move                 -- Move message to another folder
voicemail reload               -- Reload voicemail configuration
voicemail remove               -- Remove message
voicemail show aliases         -- List mailbox aliases
voicemail show mailbox         -- Display a mailbox's content details
voicemail show users [for]     -- List defined voicemail boxes
voicemail show zones           -- List zone message formats
xmldoc dump                    -- Dump the XML docs to the specified file
xmldoc reload                  -- Reload the XML docs

Activate / deactivate SIP trunk logger

pjsip set logger on
pjsip set logger off

Using the Dream Machine Pro with VO Fiber (&VoIP)

Do you want to have more control over your network, and maybe separate your IoT devices from your computer and NAS? Then you need to install a router that can handle VLAN’s and gives you more configuration possibilities.

I sorted out my Fritzbox (as a router) and connected my Fiber line (Optical Network Terminal, ONT) to a Unifi Dream Machine Pro (UDMP). Connecting the UDMP directly via SFP+ Fiber module to the Fiber cable entering the house apparently is not supported by the ISP’s in Luxembourg. It seems that they do an additional authentication based on the ONT’s MAC address additionally to the PPPoE authentication.

Internet access configuration

Here’s my setup:

PPPoE configuration for Internet & VoIP

I entered the PPPoE login and password and entered VLAN 35 for incoming traffic. In theory, in Luxembourg Internet access on the WAN side comes through VLAN 35 and VoIP through VLAN 39. But I only configured VLAN 35 and Internet as well as VoIP work on WAN VLAN 35.

This Internet configuration also works with VO’s vDSL Internet access.

You can also activate the IPv6 link using 48 as the prefix. This is experimental. I was able to activate IPv6 but did not (yet) investigate further if it correctly works..

IPv6 configuratiobn

My ISP, Visual Online, provides a public (dynamic) IP as standard. So I do not have a double-NAT situation. Some providers in Luxembourg (like Post) do not offer a public dynamic IP in their standard Fiber package, so these configurations will automatically use a double-NAT situation. If you want to avoid this, you have to book the additional public IP option (NOT the static one but the dynamic public IPv4).

VoIP Phone server configuration

To use VoIP on your phones, you need to have a phone server. Most households in Luxembourg use their FritzBox as the landline VoIP server (if they still have a landline). Alternatively, you might also use FreePBX (or another Asterisk based solution). this is still on my To-Do-list. In the meanwhile, my FritzBox now acts (only) as a Voice over IP phone server behind the UDMP router. Port 1 of the FritzBox is connected to the router, using the internal VoIP VLAN I set up for my phone server and phones. You need to configure this in the Internet / Account information settings. You also have to select other internet provider as your ISP.

Internet account information setup of the FritzBox VoIP server

Here is the working configuration for one of my telephone lines:

Telephony > Telephone Numbers >> Telephone Numbers setting for one of my CID’s

You need to define the Telephony provider, the username, password and FQDN (or IP)/Registrar for your SIP telephony account.

I configured the FritzBox to keep port forwarding enabled every 30 seconds. I do not know if this is absolutely necessary, but with this configuration my VoIP landline works just fine and remains always available.

Keeping the VoIP connection alive

IPTV configuration

I cannot state if IPTV would work using the above configuration as I do not have an IPTV contract.

Note on the FritzBox admin interface access

Normally connecting to the FritzBox’s web interface requires a password only (no username). Be aware, that if you configure the Fritzbox as a normal network client (and not as a router), as in my case, you need to create a user account with username and password to able to access the web interface. If you want to have a backup login possibility, keep the WLAN active, as you should be able to connect through the FritzBox WLAN with the standard admin password without a user login.