More Asterisk hints

Wow – a day of fixing loads of niggling little Asterisk problems!

  • Max duration

My calling plan gives me unlimited free calls as long as those calls are under an hour in duration. Pretty standard BT stuff. If you do make a call over an hour you don’t just get charged for that bit of the call over the hour, oh no, you get charged for the whole call.
Anyway – we have the technology to defeat them!

In FreePBX under General Settings change your Asterisk Outbound Dial command options to include:


which will drop the call after 3360000ms (56 minutes) and should alert you at 3240000ms.

  • Courtesy Tone

The above works very well and drops the calls, but without a bit of extra magic you don’t get the warning in your ear – it just drops the call. To enable the warning tones etc edit this:


and add


substituting “beep” for what ever noise you want to hear.

  • Call Recording

By also adding:


to the Dial command options in #1 you can press *1 when you’re in a call to start recording.  It plays the courtesy tone to both parties though.

g729 in Asterisk

I run Asterisk 1.8 at home for my own amusement.  I’ve just got a SIP trunk running again to SIPGate which had stopped running for some reason.  I’d set the DID for the SIPGate number to check for faxes and then, if it’s not a fax, go to my MOH application, but for some reason it didn’t work.

I also couldn’t access voicemail from the SIPGate trunk either, but I could get it to work with a phone connected to an ATA.

I had a look in the logs:

channel.c: Unable to find a codec translation path from 0x100 (g729) to 0x40 (slin)

Since slin is, I think, the Asterisk native format this is quite bad.  My assumption is that SIPGate sends through G.729 encoded audio regardless of whether you want it to or not (as configured in your allow/disallow lines for the SIP trunk PEER).

G729 from SIPGate works to the ATA because the ATA supports G729 and G729 to G729 pass-through works without any extra requirements from Asterisk.

So – in order to get SIPGate to Asterisk apps working again I installed the G729 codec binaries from here:

and restarted Asterisk.  Now a:

         core show translations

shows I can convert between G729 and loads of other codecs.

Asterisk VoIP calls causing PPP to drop on ADSL modems

The internet FTW.

I’ve been having this odd problem since I got my Asterisk box back up and running in that whenever a call came in and hung up I’d lose internet connectivity for a few seconds.

I tracked it down to the router dropping the PPP connection, which initially made me think that the polarity reversal indicating the call had hung up was causing the modem to b0rk, perhaps due to the distance between the phone socket and the modem, or my dodgy cat5 cabling, or something.

Turns out it was none of the above.  EDIT:  Bit hasty there.  Hasn’t fixed it al all.

This post:,43733.msg209081.html#msg209081

points to exactly my problem. I disabled the DDoS protection and no more dropped internet connections. I don’t worry about DDoS attacks too much, so for now I’m going to leave it off.

UPDATE:  None of the above actually worked.  In the end it turned out the modem had simply broken.  The NV RAM wasn’t remembering the config after a proper reboot and it was generally broken.  So I replaced the whole thing with a new DrayTek modem.  The old one did pretty well, it worked perfectly for about 3 years non-stop.

Search hints:

DrayTek VoIP Asterisk dropping ADSL PPP drop DDoS SIP

SMSq No call scheduled as already sending

In order to remind myself:

I kept getting this error when trying to send an SMS;

No call scheduled as already sending

It seems SMSq or Asterisk is quite picky about who sends the SMS. If I tired to send an SMS as myself it would fail, and then clog up /var/spool/asterisk/sms/motx with undead SMSes.

If I run smsq as the same user as Asterisk is running as it works (once you’ve deleted all the crap out of motx directory.

Just need to work out why now.

Getting NUT to talk to LiebertPSP UPS

I got hold of a couple of LiebertPSP UPSes and connected to my servers.  They’re perfectly good for what I need them for, namely stopping my servers having the rug pulled out from underneath them with no notice if there is a power cut.

They don’t appear to have advanced functions like switching off the load independently of the supply which means you can’t power down the servers and then have the UPS switch them back on again once the power is restored and the battery has had a chance to charge, but I can live without that sort of thing.

I assumed that something somewhere would support these, and for the most part NUT does a bang up job.  It’s a bit advanced for my needs but most of the work has already been done.  In NUT the LiebertPSP is sort-of-supported by the Belkin USB driver with a few notable exceptions:

  • The Online/On Battery indication doesn’t work
  • The numeric values don’t work for things like Output Voltage

The numbers I can live without but the Online / On Battery is really rather important.

So I’ve cobbled together a new sub-driver using the tools supplied with Nut.  It’s far from complete but it does fix most of the annoying problems.

You’ll need to download the Nut source and put the .c and .h files in the above tarball in to the drivers directory, then you’ll need to apply this patch in the drivers directory to get the new driver included in the build and to stop the native Belkin driver from claiming the ID of the LiebertPSP:

Then recompile Nut.

If everything works you should see a bit more info from your UPS:

battery.type: PbAc
device.mfr: Emerson Network Power
device.model: LiebertPSP
device.type: ups usbhid-ups
driver.parameter.bus: 004
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.version: 2.4.3-2519M LiebertPSP HID 0.1
driver.version.internal: 0.35
ups.input.frequency: 50.0
ups.input.voltage: 243
ups.mfr: Emerson Network Power
ups.model: LiebertPSP
ups.output.percentload: 54
ups.output.voltage: 240
ups.powersummary.capacitygranularity1: 1
ups.powersummary.capacitygranularity2: 1
ups.powersummary.capacitymode: 2
ups.powersummary.configvoltage: 12.0
ups.powersummary.designcapacity: 100
ups.powersummary.fullchargecapacity: 100
ups.powersummary.imanufacturer: 19
ups.powersummary.ioeminformation: 19
ups.powersummary.iproduct: 1
ups.powersummary.presentstatus.batterypresent: 1
ups.powersummary.presentstatus.belowremainingcapacitylimit: 0
ups.powersummary.presentstatus.charging: 1
ups.powersummary.presentstatus.discharging: 0
ups.powersummary.presentstatus.needreplacement: 0
ups.powersummary.presentstatus.shutdownimminent: 0
ups.powersummary.rechargeable: 1
ups.powersummary.remainingcapacity: 100
ups.powersummary.remainingcapacitylimit: 38
ups.powersummary.voltage: 14
ups.powersummary.warningcapacitylimit: 38
ups.productid: 0001
ups.status: OL
ups.vendorid: 10af

Search hints:

Vendor ID: 0x10af

Product ID: 0x0001

Hauppauge WinTV Nova-S Plus on Linux

The Nova-S Plus is a  good card.

But, it would appear there is a defect in these boards, or at least a strange design, which means that they won’t lock on to some frequencies which require the 22kHz tone sending to the LNB with new drivers because there’s no link between the flange and dolphin-points.  There’s plenty to read about here:

And there’s a patch which fixes the problem by controlling the tone generator directly but it’ll never get in to the main kernel.  For your convenience here is a link to a binary driver built for Ubuntu Lucid kernel version 2.6.32-23-generic:

Replace the current isl6421.ko from /lib/modules/2.6.32-23-generic/kernel/drivers/media/dvb/frontends/isl6421.ko with this one.  It might also work for newer kernel versions, or not.  Who knows?  Not me.

I’ve also got a Hauppauge S2 HD and this patched driver doesn’t seem to effect it.

Search hints:

Hauppauge Nova S plus linux won’t lock horizontal 22khz tone can’t pick up some channels. You can also check out my guide on Everything You Need to Set Up a Backyard Cinema.

Hauppauge WinTV-NOVA-HD-S2 on Ubuntu Lucid 10.04

Ubuntu 10.04 doesn’t include the required firmware to get this card to work.  Probably due to some licensing issues.

Although the card gets detected and you get the frontend device and the demod device a scan will fail to detect any channels.

The reason is that the firmware isn’t there.

Solution, copy this file to /lib/firmware/ and reboot


Tsch.  What a bell end.  Instead, install the package:


They don’t go out of their way to draw much attention to it, like telling anybody or anything.

A more resilient DNS set up

ZonEdit are suffering from a DDOS attack or something and their default free servers have stopped responding. (See:

This has caused me a few problems, the main one being that my MX records are held at ZoneEdit and so my email has effectively stopped working.  Initially I was thinking of a quick workaround, but actually this is working rather nicely.

What I’ve done is:

  • Created an account at and added similar entries as I did with ZoneEdit.  Namely, my MX records pointing back to Google, the A record for this site and a few others and some CNAME records for other Google services.
  • Updated the nameservers for the domain at my registrar to have ZoneEdit’s two free DNS servers as 1 and 2, and then the first web-dns server as number 3.

That’s it.  If ZoneEdit stop working, then once the old cached entries have expired new DNS requests start being serviced by web DNS while the ZoneEdit servers are down.   I could in theory have three different DNS services listed with my registrar but ZoneEdit have been really good, so I’m happy to stick with them for now.  If this sort of thing happens in the future then maybe I’ll host the DNS myself.

Web DNS gives you much rawer access to the zone file compared to ZoneEdit, but a bit of googling and you’ll be fine.  For example, for an MX record:

  1. Leave the first box (the name box) emtpy.
  2. Leave the TTL as 3600
  3. Change the IN to MX
  4. Set the number (auxiliary information)to zero for the first mail server, and 10 for the second, 20 for the third and so on.
  5. Set the data (the last box) to, in the case of Google Mail (e.g. Google Apps for Domains) to ASPMX.L.GOOGLE.COM.  (note the trailing dot, very important)
  6. Add the other mail servers in the same way

For a straight forward hostname resolution e.g.

  1. Set the first box to WWW
  2. Leave the TTL as 3600
  3. Change the IN to A
  4. Set the number to zero
  5. Set the data to your server IP address, e.g.