Cheap TVs for Christmas (again)

I stole this video today from NineMSN and posted it to YouTube. Jerry Harvey was on A Current Affair last night stating that like last year once again high definition TVs will be sold at or near cost this Christmas.

Originally my partner was going to get me a Noontech A9 and a high definition set top box for my old cathode ray tube TV.

But as of last night we’ve ditched this plan and are instead looking at getting an LCD TV and will add something like the Noontech A9 later. This media player seems quite interesting as it runs Android and has the capability to play virtually any computer video format over its Ethernet port. Given that Android is an operating system, this seems far better than any other embedded set top box solution, as in the future you know you’ll be able to get software updates that can potentially enable support for further codecs.

The real issue is space for me – I don’t think I could fit anything larger than a 32”. So Dick Smith are selling a Sanyo 32” for $298 and JB Hi-Fi are selling a Soniq 32” for $299.

Comparing the two, the Soniq looks quite interesting as it has USB recording, time-shift capability, 7 day EPG, and a built-in DVD player. The Sanyo doesn’t have these features, but it does come with one extra HDMI port. Also the Soniq has a worse contrast ratio of 1200:1 compared to 3000:1 on the Sanyo.

Given that Soniq are a Chinese brand that exclusively sell to JB Hi-Fi, I have my doubts. However Soniq apparently use Samsung or LG LCD panels and assemble their own casings and electronics to go with it.

Also as a Christmas project I’ll have to install a MATV amplifier to replace the mask head amplifier on our TV antenna. This way I’ll be able to improve the signal strength on the several TV antenna outlets we’ve added over the years (from the original 1 outlet at installation 15 years ago).

Digital Radio for Radio Broadcasters

I’ve been looking in to Digital Radio the past few days on behalf of one of my customers who is a community FM radio station.

I was interested to find that community radio stations won’t need to buy any new transmitters to enable digital radio – as digital radio is “multiplexed” so numerous stations are squeezed into a single signal with 1000kbits of bandwidth. There are approx 30 digital stations in Sydney which all come from just two transmitters. Because of multiplexing, the law was made that any commercial digital radio transmitters must allocate two ninths of their capacity to community radio stations.

So all we need to do is get backhaul into the transmitter site (whenever it becomes available).

Its also interesting to note that DAB+ uses AAC+ encoding. There is a new uprise in IP based STL (Studio to Transmitter Links). Many STL-IP solutions can encode in AAC+. So with an AAC+ STL-IP, there is no encoding required at the transmitter site.

My customer will be attempting to seek funding for STL-IP even for their FM transmitter but this will cost at least $10,000. Their studio is probably 200 metres from their transmitter, and is currently serviced by FM modulated analogue audio over microwave. There is only one pathway to the transmitter site and if this goes down the FM transmitter goes off air (or transmits nothing).

So the thought is by implementing STL-IP we could continue to use microwave as our primary STL, and we’d need to migrate the microwave link to something IP based. But if the microwave goes down we could utilize the studio’s ADSL2+ link and the transmitter sites fibre optic link to provide a secondary IP pathway. Migrating to STL-IP only makes sense as we could later use multicasting to send the same feed to any digital radio transmitter that pops up in the area.

But something curious about this is that CBAA’s policies on digital radio state that commercial transmitter sites only have to provide one pathway and don’t have to offer any secondary pathways. Meaning a migration to STL-IP would make our FM transmitter more redundant, but digital radio would be more susceptible to failure.

9 essential tools that are sometimes open source for Windows admins

I read this article today which is titled “15 essential open source tools for Windows admins”. Seemed interesting as I’m always looking for new ideas.

Wireshark is already a tool I use, although rarely. So I skipped the first one.

AMANDA looks like a good app. I’m interested in how it stacks up against Bacula so I will try it out later.

MailArchiva looks interesting. Essentially its to archive e-mails for at least 7 years to comply with e-mail retention laws in various countries. Although its not exactly open source as MailArchiva’s primary focus is their commercial edition.

Then the article went off into Microsoft Exchange land. I’ve said this before and I’ll say it again. What kind of retard pays thousands of dollars for a software license for an e-mail server that is inherit with limitations, when there is free software that’ll do a better job?

OCS Inventory also looks good, I know about it already, but I’m yet to tinker with it.

UltraDefrag looked like a really good app. It supposedly can defrag locked files which I presently solve by booting a CD bootable XP. If done in userland that seems like a better solution.

nmap is already an app I use and I’m advanced enough to not require zenmap.

PowerGUI doesn’t interest me at all cause I’m a command-line type guy and have been since 1992.

ClamWin? Really? I’ve tried ClamAV and outside an e-mail server it appears to be useless. Avast AntiVirus Free Edition may not be open source, but it is good.

VirtualRouter is an app to turn any Windows machine into a WiFi hotspot. I wonder though – why wouldn’t you just get a low-cost WiFi hotspot which likely does the job a million times better and more reliably?

VirtualBox I’ve used quite a few times for emulation on Windows desktops. Thanks Jason M for suggesting this to me several years ago.

So not really surprised at all that a list of 15 essential items ends up getting cut down to 9, and some of these I already use. Mostly this is because Microsoft Exchange some how made it to a list of essential open source software?

Adding robots.txt to Icecast

I noticed today that my Icecast servers are getting hit by Google quite regularly. Strange because there isn’t really any indexable content.

So today I added a robots.txt to Icecast in /usr/share/icecast2/web on Debian systems. I disallowed all robots with:

User-agent: *

Disallow: /

So hopefully I won’t get robots on my Icecast server. This would also protect against people using wget to record streams, as wget will honour robots.txt.

Running Icecast on port 80

Running Icecast on port 80 is a good idea so that users behind corporate firewalls can still access your Icecast feed as you are not directing them to use non-standard ports.

However its not that easy since Icecast isn’t heavily audited for security faults and thus isn’t really setup to run on port 80.

Icecast should not run as root. Linux does not allow non-root users to bind to ports below 1024. So this is a problem.

The work around is to use iptables to redirect requests on port 80 to another port.

I used the following rules:

iptables -A PREROUTING -t nat –dst 8.8.8.8/32 -p tcp –dport 80 -j DNAT –to 8.8.8.8:8080

iptables -A INPUT -p tcp -m state –state NEW –dport 80 –dst 8.8.8.8/32 -j ACCEPT

Server Clustering

I was looking at the costing of my Internet hosting a few weeks ago and decided I’m paying too much.

I have a couple dedicated servers in a few locations, mostly at iWeb. For the purpose of this blog I’ll do the costing on just one of them which was $104 USD per month.

The main reason I was keeping the hosting at iWeb was for Icecast servers as I operate the Internet streams for several FM radio stations which can consume a bit of bandwidth. Last week I was able to locate several Virtual Private Server packages with sufficient bandwidth for my Icecast servers from $3 USD per month. Quite a difference. Even if these VPS providers are overselling or are flyby companies, with good backups and my credit card I should be able to install replacement servers in a matter of hours.

Lowendbox proved to be a useful resource in tracking down VPS packages.

I decided on taking the approach of migrating all web, email and DNS hostings to Australia with Jumba. 90% of these sites target Australians so it will serve to improve the performance of these websites for the target audience.

I also decided to get accounts in Los Angeles and The Netherlands for mail and DNS backups. I will later do some works on clustering web servers and utilize GeoIP support in BIND to direct visitors to their nearest server and will end up migrating a few websites across. I’ve already successfully setup my Icecast servers to cluster and am in the process of stability testing that system.

So all up to replace one machine costing $104 per month… I ended up buying:

  • 2x VPS with Jumba – 512MB Memory, 10GB Hard Disk, 100GB Network Transfer – $20 AUD per month
  • VPS with Hostitek – 1GB Memory, 80GB Hard Disk, 2000GB Network Transfer – $6 USD per month
  • VPS with VMPort – 256MB Memory, 20GB Hard Disk, 250GB Network Transfer – £3.52 GBP per month

So for around $35 per month… I’ve successfully reduced that hosting cost of $104 per month. Sure I don’t get the same processor, memory, hard disk and bandwidth… but I didn’t need such large quotas anyway.

Clustering Icecast2 with fallback streams

I’m undergoing a project at the moment to setup servers in key geographic locations around the world to better deliver an Icecast stream when compared to the existing single server in Canada.

Icecast has the fallback feature on mounts so that if a mount is unavailable you can direct clients to a new mount provided its the same format and bitrate. So you can infinitely redirect users until a working mount is found.

The following is configs for servers in Australia, Europe & The United States taking the feed from 2 publishing servers and making The United States the default server to take the feed from the publishing servers:

Australia:

<relay>
    <server>us.icecast</server>
    <port>8080</port>
    <mount>/stream.mp3</mount>
    <local-mount>/stream.mp3</local-mount>
    <on-demand>1</on-demand>
    <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
    <server>eu.icecast</server>
    <port>8080</port>
    <mount>/stream.mp3</mount>
    <local-mount>/stream-eu.mp3</local-mount>
    <on-demand>1</on-demand>
    <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
    <server>publisher1.icecast</server>
    <port>8080</port>
    <mount>/stream.mp3</mount>
    <local-mount>/stream-pub1.mp3</local-mount>
    <on-demand>1</on-demand>
    <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
    <server>publisher2.icecast</server>
    <port>8080</port>
    <mount>/stream.mp3</mount>
    <local-mount>/stream-pub2.mp3</local-mount>
    <on-demand>1</on-demand>
    <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>

<mount>
    <mount-name>/stream.mp3</mount-name>
    <fallback-mount>/stream-eu.mp3</fallback-mount>
    <fallback-override>1</fallback-override>
    <fallback-when-full>0</fallback-when-full>
    <stream-name>Stream Name Goes Here</stream-name>
   <stream-description>Stream Description Goes Here</stream-description>
    <stream-url>
http://www.icecast</stream-url>
    <bitrate>128</bitrate>
    <public>1</public>
    <hidden>0</hidden>
</mount>
<mount>
    <mount-name>/stream-eu.mp3</mount-name>
    <fallback-mount>/stream-pub1.mp3</fallback-mount>
    <fallback-override>1</fallback-override>
    <fallback-when-full>0</fallback-when-full>
    <stream-name>Stream Name Goes Here</stream-name>
    <stream-description>Stream Description Goes Here</stream-description>
    <stream-url>
http://www.icecast</stream-url>
    <bitrate>128</bitrate>
    <public>0</public>
    <hidden>1</hidden>
</mount>
<mount>
    <mount-name>/stream-pub1.mp3</mount-name>
    <fallback-mount>/stream-pub2.mp3</fallback-mount>
    <fallback-override>1</fallback-override>
    <fallback-when-full>0</fallback-when-full>
    <stream-name>Stream Name Goes Here</stream-name>
    <stream-description>Stream Description Goes Here</stream-description>
    <stream-url>
http://www.icecast</stream-url>
    <bitrate>128</bitrate>
    <public>0</public>
    <hidden>1</hidden>
</mount>
<mount>
    <mount-name>/stream-pub2.mp3</mount-name>
    <fallback-mount>/stream.mp3</fallback-mount>
    <fallback-override>1</fallback-override>
    <fallback-when-full>0</fallback-when-full>
    <stream-name>Stream Name Goes Here</stream-name>
    <stream-description>Stream Description Goes Here</stream-description>
    <stream-url>
http://www.icecast</stream-url>
    <bitrate>128</bitrate>
    <public>0</public>
    <hidden>1</hidden>
</mount>

Europe:

<relay>
    <server>us.icecast</server>
    <port>8080</port>
    <mount>/stream.mp3</mount>
    <local-mount>/stream.mp3</local-mount>
    <on-demand>1</on-demand>
    <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
    <server>au.icecast</server>
    <port>8080</port>
    <mount>/stream.mp3</mount>
    <local-mount>/stream-au.mp3</local-mount>
    <on-demand>1</on-demand>
    <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
    <server>publisher1.icecast</server>
    <port>8080</port>
    <mount>/stream.mp3</mount>
    <local-mount>/stream-pub1.mp3</local-mount>
    <on-demand>1</on-demand>
    <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
    <server>publisher2.icecast</server>
    <port>8080</port>
    <mount>/stream.mp3</mount>
    <local-mount>/stream-pub2.mp3</local-mount>
    <on-demand>1</on-demand>
    <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>

<mount>
    <mount-name>/stream.mp3</mount-name>
    <fallback-mount>/stream-au.mp3</fallback-mount>
    <fallback-override>1</fallback-override>
    <fallback-when-full>0</fallback-when-full>
    <stream-name>Stream Name Goes Here</stream-name>
    <stream-description>Stream Description Goes Here</stream-description>
    <stream-url>
http://www.icecast</stream-url>
    <bitrate>128</bitrate>
    <public>1</public>
    <hidden>0</hidden>
</mount>
<mount>
    <mount-name>/stream-au.mp3</mount-name>
    <fallback-mount>/stream-pub1.mp3</fallback-mount>
    <fallback-override>1</fallback-override>
    <fallback-when-full>0</fallback-when-full>
    <stream-name>Stream Name Goes Here</stream-name>
    <stream-description>Stream Description Goes Here</stream-description>
    <stream-url>
http://www.icecast</stream-url>
    <bitrate>128</bitrate>
    <public>0</public>
    <hidden>1</hidden>
</mount>
<mount>
    <mount-name>/stream-pub1.mp3</mount-name>
    <fallback-mount>/stream-pub2.mp3</fallback-mount>
    <fallback-override>1</fallback-override>
    <fallback-when-full>0</fallback-when-full>
    <stream-name>Stream Name Goes Here</stream-name>
    <stream-description>Stream Description Goes Here</stream-description>
    <stream-url>
http://www.icecast</stream-url>
    <bitrate>128</bitrate>
    <public>0</public>
    <hidden>1</hidden>
</mount>
<mount>
    <mount-name>/stream-pub2.mp3</mount-name>
    <fallback-mount>/stream.mp3</fallback-mount>
    <fallback-override>1</fallback-override>
    <fallback-when-full>0</fallback-when-full>
    <stream-name>Stream Name Goes Here</stream-name>
    <stream-description>Stream Description Goes Here</stream-description>
    <stream-url>
http://www.icecast</stream-url>
    <bitrate>128</bitrate>
    <public>0</public>
    <hidden>1</hidden>
</mount>

The United States:

<relay>
    <server>publisher1.icecast</server>
    <port>8080</port>
    <mount>/stream.mp3</mount>
    <local-mount>/stream.mp3</local-mount>
    <on-demand>0</on-demand>
    <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
    <server>publisher2.icecast</server>
    <port>8080</port>
    <mount>/stream.mp3</mount>
    <local-mount>/stream-pub2.mp3</local-mount>
    <on-demand>1</on-demand>
    <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
    <server>eu.icecast</server>
    <port>8080</port>
    <mount>/stream.mp3</mount>
    <local-mount>/stream-eu.mp3</local-mount>
    <on-demand>1</on-demand>
    <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>
<relay>
    <server>au.icecast</server>
    <port>8080</port>
    <mount>/stream.mp3</mount>
    <local-mount>/stream-au.mp3</local-mount>
    <on-demand>1</on-demand>
    <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
</relay>

<mount>
    <mount-name>/stream.mp3</mount-name>
    <fallback-mount>/stream-pub2.mp3</fallback-mount>
    <fallback-override>1</fallback-override>
    <fallback-when-full>0</fallback-when-full>
    <stream-name>Stream Name Goes Here</stream-name>
    <stream-description>Stream Description Goes Here</stream-description>
    <stream-url>
http://www.icecast</stream-url>
    <bitrate>128</bitrate>
    <public>1</public>
    <hidden>0</hidden>
</mount>
<mount>
    <mount-name>/stream-pub2.mp3</mount-name>
    <fallback-mount>/stream-eu.mp3</fallback-mount>
    <fallback-override>1</fallback-override>
    <fallback-when-full>0</fallback-when-full>
    <stream-name>Stream Name Goes Here</stream-name>
    <stream-description>Stream Description Goes Here</stream-description>
    <stream-url>
http://www.icecast</stream-url>
    <bitrate>128</bitrate>
    <public>0</public>
    <hidden>1</hidden>
</mount>
<mount>
    <mount-name>/stream-eu.mp3</mount-name>
    <fallback-mount>/stream-au.mp3</fallback-mount>
    <fallback-override>1</fallback-override>
    <fallback-when-full>0</fallback-when-full>
    <stream-name>Stream Name Goes Here</stream-name>
    <stream-description>Stream Description Goes Here</stream-description>
    <stream-url>
http://www.icecast</stream-url>
    <bitrate>128</bitrate>
    <public>0</public>
    <hidden>1</hidden>
</mount>
<mount>
    <mount-name>/stream-au.mp3</mount-name>
    <fallback-mount>/stream.mp3</fallback-mount>
    <fallback-override>1</fallback-override>
    <fallback-when-full>0</fallback-when-full>
    <stream-name>Stream Name Goes Here</stream-name>
    <stream-description>Stream Description Goes Here</stream-description>
    <stream-url>
http://www.icecast</stream-url>
    <bitrate>128</bitrate>
    <public>0</public>
    <hidden>1</hidden>
</mount>

Next up for my project I need to setup BIND with GeoIP support so that DNS will direct you to your nearest server. I’ll blog about how I do that too.

I will also devise a system to detect outages with a particular node and take it out of DNS.

iiNet’s BoB Lite is insecure? And?

iinetbobI read this article on delimiter this morning which pointed out the BoB Lite router shipped by iiNet has an insecure wireless setup. The article pointed out that by default wireless is turned on and has no password/encryption.

AND?

Dynalink/Netcomm are pretty bad at this. I know, I sell them. The RTA1046VW ships by default with wireless turned on and no password/encryption.

D-Link and Netgear are also fairly insecure. They do have encryption turned on by default but the passphrase is usually abcdefg.

So whats the big deal, Delimiter?

But I do generally agree – router manufacturers should consider shipping with better default security, and iiNet is a bad choice *chuckle*

Logitech Harmony 600

logitechharmony600I bought a Logitech Harmony 600 the other day as I did not have a remote for my DVD player, the battery cover for my TV remote has been missing for some time, and the remote for my digital set top box barely worked even when it was new.

I must say its a dramatic improvement! The “All Off” button is very handy as it turns off all devices with just one press.

I did have to customize the buttons however for the “Watch TV” activity so that the volume is controlled by the TV and that most other buttons are done on the digital set top box.

Otherwise the setup for the Harmony is very easy. I cannot get my head around why people would say it is hard. I recall setting up a basic universal remote some years ago where I had to look up different devices in its book, enter in numbers, and then by trial and error experiment to see which configuration worked best. It took hours. The harmony took probably 20 minutes to setup correctly.

Next I have to configure a different Harmony of the same model for the girlfriends parents.

I think my next purchase will be an AV switch that has a remote control so I don’t have to flick the switch on top of the TV.