Culprit

The culpritIs this the culprit?

For a while now the AC has been picking up rubbish from the fuel tank, and clogging the pump filter. There’s two intakes that enter near the top, and extend down towards the bottom where they meet the gauze sleeves of these drain plugs.

Unfortunately, this gauze filter was bent a while back, and subsequently straightened out hastily. I thought all was good, until we were plagued with fuel problems. Further investigation reveals that it has a hole, and is full of gunk inside the filter. This will cause gunk to be drawn into the intakes and up to the pump, and may explain why the pump filter is getting clogged all the time.

Time for some cleaning and soldering!

RNDIS Modem & Linux

For a few weeks now, I’ve been trying to get my HTC Touch HD phone to work as a tethered (cos I haven’t bought a Bluetooth module for the laptop yet) RNDIS modem on Linux. I know it works great on Windows, but some for inexplicable reason connections would be fine on Linux for a minute or two, and then start timing out. ICMP worked great all the time, but SSH would only get a few lines, HTTP would get a few KB downloaded, etc. Rather infuriating.

Some investigation revealed the following in the output of dmesg when Internet Sharing was started up. Not very encouraging either, although it does give something to base a search on.

[ 5967.528071] usb 1-2: new high speed USB device using ehci_hcd and address 9
[ 5967.728209] usb 1-2: configuration #1 chosen from 1 choice
[ 5967.860790] rndis_host 1-2:1.0: dev can’t take 1536 byte packets (max 1536), adjusting MTU to 1478
[ 5967.870155] rndis_host 1-2:1.0: RNDIS_MSG_QUERY(0x00010202) failed, -47
[ 5967.892147] eth2: register ‘rndis_host’ at usb-0000:00:1d.7-2, RNDIS device, 80:00:60:0f:e8:00

After much fiddling around on forums, I came across the following solution… Continue reading “RNDIS Modem & Linux”

Asterisk and Festival Integration

So… you want your PBX to talk to you? This could be the start of a very bad relationship! In this short piece, I’ll describe making Asterisk on Debian/Ubuntu talk to Festival that is also installed on a Debian or Ubuntu server.

Firstly, have a read at VoIP-Info but don’t make any changes to files just yet. In this scenario, I’ll be using Method 1.

Create /etc/festival.scm and put the following into it – you may recognize it from Step 1 in the wiki.

;; Enable access to localhost (needed by debian users)
(set! server_access_list ‘(“localhost\\.localdomain” “localhost”))

;;; Command for Asterisk begin

(define (tts_textasterisk string mode)
“(tts_textasterisk STRING MODE)
Apply tts to STRING. This function is specifically designed for
use in server mode so a single function call may synthesize the string.
This function name may be added to the server safe functions.”
(let ((wholeutt (utt.synth (eval (list ‘Utterance ‘Text string)))))
(utt.wave.resample wholeutt 8000)
(utt.wave.rescale wholeutt 5)
(utt.send.wave.client wholeutt)))

;;; Command for Asterisk end

If you are going to access it from a different host, put the source IP address or hostname into the server_access_list array variable.

Next up, execute cp /usr/share/doc/festival/examples/festival.init /etc/init.d/festival to copy a sample init script to the init.d directory. Use chmod +x /etc/init.d/festival to make it executable, and then use update-rc.d festival defaults to insert startup links in the default runlevel directories.

/etc/default/festival also requires RUN_FESTIVAL=yes in it, in order for the init script to start the server.

Once all of the above is complete, you should be able to run /etc/init.d/festival start and Festival will start. This can be verified as such…

root@mxns2:~# ps waux | grep -i festiva[l]
festival 25411 0.0 8.4 26728 21496 ? S 22:52 0:00 /usr/bin/festival –server -b /etc/festival.scm
root@mxns2:~#

You can also check to see that Festival is listening on the network, as it should be in this case.

root@mxns2:~# netstat -lnp | grep -i festival
tcp 0 0 0.0.0.0:1314 0.0.0.0:* LISTEN 25411/festival
root@mxns2:~#

This tells us that it is listening on all IP addresses assigned to the server, on port 1314. Access control is provided by the array mentioned earlier.

Next up, Asterisk has to be told how to communicate with Festival. This is done by creating the /etc/asterisk/festival.conf file, and putting the following data into it.

[general]
host=localhost
port=1314
usecache=yes
cachedir=/var/cache/asterisk/festival/
festivalcommand=(tts_textasterisk “%s” ‘file)(quit)\n

As noted above, the port that Festival is listening on is 1314, and in this case Asterisk and Festival are both running on the same server – hence localhost. In my setup, I have a remote Festival server, and I put in the IP address of the Festival server.

So, almost all good to go. All you need to do now is set up an extension with the appropriate details. As per the wiki, you could stick the following into your extensions.conf

; testing festival (text-to-speech app)
exten => 555,1,Answer
exten => 555,2,Festival(mary had a little lamb) ; do NOT use quotes around the string! if you use commas, you will have to escape them with a “\” (backslash).
exten => 555,3,Hangup

Reload Asterisk, and off you go!