I have been slowly replacing the old analog phones around my house with some nitfy IP phones. Since I am someone that doesn't like to get too tied down by one vendor, I am using a variety of different phones. (Okay, to be fair, it isn't just a one vendor issue. It is also phones that I can get cheap. ;)
To that end, I have replaced my office phone with a Cisco 7960, the phone in my basement with a Polycom 501, and the phone in my kitchen with a Budgetone (model number escapes me at the moment.) All of these phones are tied to my Asterisk box running in the basement.
At this point, there is only one set of phones in my house that are not IP based. Those would be the old stand-by cordless phones that are probably the second most used phones in the house.
Some time ago, I picked up one of the D-Link "flip-phone" SIP phones. (Model DPH-540, IIRC.) The phone worked surprisingly well for a gen 1 wifi phone. The range was great, the sound was good, but the battery was so horrible that the phone was only usable as a toy. Cordless phones around my house can sit out of their charging station for days (sometimes weeks) without being put back. Needless to say, the D-Link was never charged when I wanted to use it.
So, I started to look around to see what other options were out there. My criteria were somewhat simple. The phone needed to have a significant stand-by time, several days at a minimum. Obviously the phone needed to work with some form of secure SSID, WPA-Enterprise would be great, but I would settle for WPA-PSK.
After some digging, I came up with two phones that looked like they would do what I needed. They were the Quickphones QA-342, and the Unidata WPU7700. I managed to track down the Quickphones for about $130, while the best price I could find on the Unidata was $160. So, I decided to go with the Quickphones.
My goal was that this blog post would be a short entry, made about 7 days after the phone arrived. The D-Link had shown me that there are stable wifi SIP stacks out there, so I assumed that the main thing I would looking at with the Quickphones was the battery life.
Boy, was I wrong! The first problem I ran in to was right out of the box. When I scanned for wireless networks, nothing showed up. This seemed insane to me, since there are a HUGE number of wireless networks in my area. (My house alone probably has 12 SSIDs!!!) After messing with the phone for a while, I did manage to see one or two SSIDs every now and then, but never the SSIDs I wanted to use.
In past years, I have worked with the Interop iLabs people on wireless related demos for the shows in Las Vegas and New York. So, I knew that many wireless implementations have silly restrictions on the size of the scan buffer. So, I decided to pair down the number of SSIDs that the phone could see. First, I turned off all of the wireless in my house. After a reboot, the phone could now see all of my neighbors wireless networks! So, I paired down the list of SSIDs I was broadcasting in my house to just the 4 that I needed to use the most.
I rebooted the phone, thinking I had solved the problem, and again, I saw no scan data. So, I hopped over to the Quickphones site to check that my firmware was up to date. There were two firmwares available on their site. However, version 4 required a license key, so I fired an e-mail off to the Quickphones folks to see if I qualified for the upgrade, and then loaded version 3 on my phone.
Version 3 made no difference. I still couldn't see my SSIDs in the scan. Since I had read of some of the reviews about the phone that it had issues with multiple APs on the same SSID, I shut down all of the radios in my house except the one that was nearest to me. Surprisingly enough, the phone could now see the network, connect to it, and make a call. Thinking that it might be some weirdness in the software that prevented the initial setup when multiple APs were around, I turned the other APs back on, and rebooted the phone. After the reboot, the phone just bounced between scanning, and joining.
The next day, I checked my e-mail and found that the Quickphones people had responded to my initial e-mail within an hour of my sending it. (Downright amazing if you ask me. I can't tell you how many companies have ignored e-mails from me!) In the e-mail was the code I needed to upgrade to version 4. So, I quickly loaded up version 4, did a master reset, and a fresh scan.
My SSIDs show up this time! Life was finally going to be good! So, I attempted to connect to the SSID, but wasn't able to. Every time I put the key in, it complained that it was incorrect. So, I shut down all but one of the APs again, and connected. That method still worked at least!
Once I had done this, I went in to the settings, and turned on the new setting for multiple AP support. I then turned my other APs back on. The phone remained connected to the AP that I was sitting next to! Life again, seemed to be looking up. So, I rebooted the phone to see what would happen. After the reboot, the phone went between scanning and network down mode a few times, then switched to joining, and proceeded to sit there on that screen for a good half hour.
At this point, I am starting to run out of ideas. It is unclear to me if the issue I am running in to is multiple APs, or if it is some incompatibility with the Trapeze wireless gear that I am using. Fortunately, I have a small pile of wireless gear sitting around my house, so I should be able to narrow it down. In the mean time, I am going to also launch a pre-emptive e-mail to the Quickphones folks and see if they are aware of this issue, and if I can help them figure out what it wrong.
More as it develops.....
Sunday, February 7, 2010
Tuesday, December 1, 2009
Love and Hate with Asterisk
For a year or two I have been running an Asterisk server. It has been wonderful. Recently, I wanted to add the new Skype functionality to Asterisk, so it required that I move from an old Apple X Serve to an x86 based machine. In the process, I figured I would upgrade from Asterisk 1.4, to 1.6. It should be simple, right?
Umm.. Yeah... Something like that. My configuration consists of a Sipura/Linksys/Cisco SPA-3102, the Asterisk server, and a collection of random VoIP phones around the house. By just moving the configurations from the old server to the new one, I was able to get the VoIP phones to talk to each other, along with being able to make outbound PSTN calls. This left me with three major headaches for the migration.
1. Calls from VoIP phones to the analog port on the SPA failed.
2. Inbound calls from PSTN->Asterisk weren't routed to the phones.
3. My custom AEL scripts to stop annoying people were broken.
Fixing #1 was pretty easy. The failure was coming from the fact that I had some events in the extension that couldn't be executed, so Asterisk would stop working through the list. (Or, in a nutshell, #3 was the cause of #1.) By changing the events back to a basic "ring the phone" list, this problem was solved.
#2 was a real pain. The solution was ultimately stupid/annoying. (Isn't it always!?) In the sip.conf file, I had "insecure=very" set in the [spa3k-pstn] configuration. It would seem this doesn't mean the same thing in 1.6 that it did in 1.4. Changing the line to "insecure=invite" resolved that problem, and allowed inbound calls to work once again.
#3 is an adventure I have not yet undertaken. Stay tuned...
Umm.. Yeah... Something like that. My configuration consists of a Sipura/Linksys/Cisco SPA-3102, the Asterisk server, and a collection of random VoIP phones around the house. By just moving the configurations from the old server to the new one, I was able to get the VoIP phones to talk to each other, along with being able to make outbound PSTN calls. This left me with three major headaches for the migration.
1. Calls from VoIP phones to the analog port on the SPA failed.
2. Inbound calls from PSTN->Asterisk weren't routed to the phones.
3. My custom AEL scripts to stop annoying people were broken.
Fixing #1 was pretty easy. The failure was coming from the fact that I had some events in the extension that couldn't be executed, so Asterisk would stop working through the list. (Or, in a nutshell, #3 was the cause of #1.) By changing the events back to a basic "ring the phone" list, this problem was solved.
#2 was a real pain. The solution was ultimately stupid/annoying. (Isn't it always!?) In the sip.conf file, I had "insecure=very" set in the [spa3k-pstn] configuration. It would seem this doesn't mean the same thing in 1.6 that it did in 1.4. Changing the line to "insecure=invite" resolved that problem, and allowed inbound calls to work once again.
#3 is an adventure I have not yet undertaken. Stay tuned...
Sunday, October 18, 2009
Acer Aspire Revo as a MythTV frontend
When Acer released the Aspire Revo, a lot of people seemed to think it would make a good front-end for a MythTV box. The price point seemed reasonable, the hardware seemed capable, and the size was just right.
However, Acer decided not to release it in the US at launch. Unfortunately, my trek to the UK for the year had already passed by the time it was released. (I was also a little too early for the start of the Depeche Mode tour, but that is a different story.) So, I looked around in Japan while I was there this summer, and was unable to locate one in either Akiba or Den-den town.
But, it was unclear that it would have worked well considering only SVN had the needed VDPAU support for MythTV. But, when the Revo FINALLY showed up at Newegg for a mere $199.99, I jumpped and snapped one up.
I'll spare you specs of the box, since it is posted all over the net. If you are really curious which one I have, you can see the specs here : http://www.newegg.com/Product/Product.aspx?Item=N82E16883103228&Tpk=Acer%20Aspire%20Revo .
Once I got the box, I loaded Gentoo Linux on it, and grabbed the 0.22rc1 release of MythTV from the MythTV site. I also loaded up the latest beta driver from NVidia's web site so I could be sure to get support for the ION chip in this box.
In a nutshell, the Revo is a pretty good option for someone looking for a fairly no frills front end for MythTV. There are just a couple of issues to watch out for.
First, MythTV wants your VDPAU enabled board to have 512 Megs of RAM, minimum. In the stock configuration I ordered from NewEgg, the box only comes with 1 Gig of RAM. The maximum amount of RAM that the BIOS will allow to be assigned to video is only 256 Meg. In my initial testing, this worked okay, but it is always a good idea to meet the specs of the software you are running. (It will usually result in less pain.)
My theory was that if I upgraded the RAM, perhaps the BIOS would let me assign more memory to the video card. So, I dug up some SODIMMs that I had laying around the house. (Yes, I know.. Most people don't have SODIMMs laying around the house. ;) A little bit searching around on Google, and I found this video on how to open the case : http://www.youtube.com/watch?v=7ayQOyTEWRw . The video suggests the use of a flat-head screw driver to pry the case open, but I found that less damage was done to the case if I used the slot cover from a desktop case instead.
Once the box was open, I slapped the 1 Gig SODIMM in the available slot, booted the machine up, and checked the BIOS. It allowed me to up the video memory from 256M to 512M. Mission accomplished!
So, how well does it REALLY work? I think the answer to this will come only after a few weeks of using it. But, in my tests, with VDPAU running, and watching live TV from a 1080i source, the CPU sat at about 12-13%. This was without any form of deinterlacing enabled, so it may well be higher when I get around to messing with that. The box also managed to play DVDs, and FLAC audio with no problems.
So, a Myth frontend for $199.99? There has to be SOMETHING wrong with it! It is too good to be true! Well, I am not sure I would say that there is anything "wrong" with the box, but there are some things that you may want to consider before picking up a Revo. One of the most glaring is the lack of any form of digial audio out. For me, this is a non-issue since I am hooking it up to a TV that only has stereo anyway. But, for some, this may be a good enough reason to steer clear of this system. The box also has two other annoyances. First, the only audio jack is on the front. So, if the box sits somewhere that people might see it, the audio cable will be sticking out. Second, the power LED on the box is a bright white LED on one of the corners. If you were going to put this in a room where you wanted it to be dark at night, this could be an issue. However, solving this is fairly easy. A little bit of painters tape from your local hardware store should be enough to dim the light on the box.
If you need a front-end that is similar to the Revo, but has optical or other features, you might check out the mainboards that NewEgg sells. I saw a few of the Atom boards with the ION chips on them. Many of those included all of the outputs you could possibly want.
But, at the end of the day, a board with an Atom processor, and an NVidia ION chip is plenty for driving a MythTV frontend.
However, Acer decided not to release it in the US at launch. Unfortunately, my trek to the UK for the year had already passed by the time it was released. (I was also a little too early for the start of the Depeche Mode tour, but that is a different story.) So, I looked around in Japan while I was there this summer, and was unable to locate one in either Akiba or Den-den town.
But, it was unclear that it would have worked well considering only SVN had the needed VDPAU support for MythTV. But, when the Revo FINALLY showed up at Newegg for a mere $199.99, I jumpped and snapped one up.
I'll spare you specs of the box, since it is posted all over the net. If you are really curious which one I have, you can see the specs here : http://www.newegg.com/Product/Product.aspx?Item=N82E16883103228&Tpk=Acer%20Aspire%20Revo .
Once I got the box, I loaded Gentoo Linux on it, and grabbed the 0.22rc1 release of MythTV from the MythTV site. I also loaded up the latest beta driver from NVidia's web site so I could be sure to get support for the ION chip in this box.
In a nutshell, the Revo is a pretty good option for someone looking for a fairly no frills front end for MythTV. There are just a couple of issues to watch out for.
First, MythTV wants your VDPAU enabled board to have 512 Megs of RAM, minimum. In the stock configuration I ordered from NewEgg, the box only comes with 1 Gig of RAM. The maximum amount of RAM that the BIOS will allow to be assigned to video is only 256 Meg. In my initial testing, this worked okay, but it is always a good idea to meet the specs of the software you are running. (It will usually result in less pain.)
My theory was that if I upgraded the RAM, perhaps the BIOS would let me assign more memory to the video card. So, I dug up some SODIMMs that I had laying around the house. (Yes, I know.. Most people don't have SODIMMs laying around the house. ;) A little bit searching around on Google, and I found this video on how to open the case : http://www.youtube.com/watch?v=7ayQOyTEWRw . The video suggests the use of a flat-head screw driver to pry the case open, but I found that less damage was done to the case if I used the slot cover from a desktop case instead.
Once the box was open, I slapped the 1 Gig SODIMM in the available slot, booted the machine up, and checked the BIOS. It allowed me to up the video memory from 256M to 512M. Mission accomplished!
So, how well does it REALLY work? I think the answer to this will come only after a few weeks of using it. But, in my tests, with VDPAU running, and watching live TV from a 1080i source, the CPU sat at about 12-13%. This was without any form of deinterlacing enabled, so it may well be higher when I get around to messing with that. The box also managed to play DVDs, and FLAC audio with no problems.
So, a Myth frontend for $199.99? There has to be SOMETHING wrong with it! It is too good to be true! Well, I am not sure I would say that there is anything "wrong" with the box, but there are some things that you may want to consider before picking up a Revo. One of the most glaring is the lack of any form of digial audio out. For me, this is a non-issue since I am hooking it up to a TV that only has stereo anyway. But, for some, this may be a good enough reason to steer clear of this system. The box also has two other annoyances. First, the only audio jack is on the front. So, if the box sits somewhere that people might see it, the audio cable will be sticking out. Second, the power LED on the box is a bright white LED on one of the corners. If you were going to put this in a room where you wanted it to be dark at night, this could be an issue. However, solving this is fairly easy. A little bit of painters tape from your local hardware store should be enough to dim the light on the box.
If you need a front-end that is similar to the Revo, but has optical or other features, you might check out the mainboards that NewEgg sells. I saw a few of the Atom boards with the ION chips on them. Many of those included all of the outputs you could possibly want.
But, at the end of the day, a board with an Atom processor, and an NVidia ION chip is plenty for driving a MythTV frontend.
Monday, October 12, 2009
Of Androids and USB
In general, I am a fan of the Android phone. (In case you couldn't tell.) But, I just spend 2 hours fighting with a myTouch3g trying to get it set up so I could use it as a debug target.
Now, in general, I suspect most people won't have this type of problem, since I am fairly sure it is the result of previously having my system configured to debug on my ADP1. But, if you happen to run in to this problem, here are some things that might help.
1. Download USBDeview from http://www.nirsoft.net/utils/usb_devices_view.html .
2. Unplug your phone from the computer.
3. Run USBDeview, find everything listed as an Android device, and uninstall it.
4. In the Android SDK, run "adb kill-server"
5. Make sure your phone is configured for development, and plug it back in.
This should cause Windows to find it again as if it had never been plugged in. It should give you the option of installing the ADB driver from the latest version of the SDK.
Once I had done this, the phone didn't immediately show up. To fix that, I left the phone connected, and toggled the development checkbox. After that, it showed up and I could use it.
Now, in general, I suspect most people won't have this type of problem, since I am fairly sure it is the result of previously having my system configured to debug on my ADP1. But, if you happen to run in to this problem, here are some things that might help.
1. Download USBDeview from http://www.nirsoft.net/utils/usb_devices_view.html .
2. Unplug your phone from the computer.
3. Run USBDeview, find everything listed as an Android device, and uninstall it.
4. In the Android SDK, run "adb kill-server"
5. Make sure your phone is configured for development, and plug it back in.
This should cause Windows to find it again as if it had never been plugged in. It should give you the option of installing the ADB driver from the latest version of the SDK.
Once I had done this, the phone didn't immediately show up. To fix that, I left the phone connected, and toggled the development checkbox. After that, it showed up and I could use it.
Friday, September 18, 2009
Calling my app from a MIME type in Android
It seems like this is something that people might want to be able to easily do. But, surprisingly enough when I google this, I get a lot of posts with people saying, "How do I have my app get called when the browser reads a certain MIME type?"
Here is your answer.
It is really fairly simple. In fact, most of what you need to know is included in the Notepad sample app on the Android SDK site! But, there are some minor details missing.
If you follow what is available on the Android SDK site, you would add a new <intent-filter> to your manifest, that would look something like this :
Then, you just need to have a web server that can serve up our "testtype/testtype" MIME type to make it work, right?
Well, to test that theory, I hacked up this cute little piece of PHP, and stuck it on a local web server :
Note : Your web server will have to be able to run PHP for this to work! You are on your own to figure that out.
I named this PHP script test.php, and dropped it in the root share for my web server. Then, I pulled up the Android browser, and went to the web page : <myserver>/test.php .
What happened, was underwhelming to say the least. The phone downloaded a file called test.php. If I then tapped on the file name, it would start my application. So, I knew I was close.
After more digging around, I discovered the magical incantation. The MIME type line needs to know that we want to look specifically for things downloaded via http. So, I made a small change to my manifest file. The MIME type line now looks like this :
Then, I ran the same test again, and my application was now loaded when I attempted to pull up the .php script that issued the testtype MIME type.
Here is your answer.
It is really fairly simple. In fact, most of what you need to know is included in the Notepad sample app on the Android SDK site! But, there are some minor details missing.
If you follow what is available on the Android SDK site, you would add a new <intent-filter> to your manifest, that would look something like this :
<intent-filter>
<action:name="android.intent.action.VIEW" />
<category:name="android.intent.category.DEFAULT" />
<data:mimetype="testtype/testtype" />
</intent-filter>
Then, you just need to have a web server that can serve up our "testtype/testtype" MIME type to make it work, right?
Well, to test that theory, I hacked up this cute little piece of PHP, and stuck it on a local web server :
<?php
header("Content-type: testtype/testtype");
echo("Testing!");
?>
Note : Your web server will have to be able to run PHP for this to work! You are on your own to figure that out.
I named this PHP script test.php, and dropped it in the root share for my web server. Then, I pulled up the Android browser, and went to the web page : <myserver>/test.php .
What happened, was underwhelming to say the least. The phone downloaded a file called test.php. If I then tapped on the file name, it would start my application. So, I knew I was close.
After more digging around, I discovered the magical incantation. The MIME type line needs to know that we want to look specifically for things downloaded via http. So, I made a small change to my manifest file. The MIME type line now looks like this :
<data:mimetype="testtype/testtype" scheme="http">
Then, I ran the same test again, and my application was now loaded when I attempted to pull up the .php script that issued the testtype MIME type.
Monday, September 7, 2009
Its ALIVE!!!!
Well, I just dropped my first Android application out on the Marketplace. "Movie Track" was my first attempt at an Android program, and has been really useful to me. I only put it out there in hopes that others might also find it useful. When it comes right down to it, the app isn't super flashy, and isn't something you would show your friends to convince them how cool the android is. Instead, it is the first of hopefully many programs I will be releasing to the marketplace.
So, if you happen to have a MythTV box, and a lot of movies, give my app a try!
So, if you happen to have a MythTV box, and a lot of movies, give my app a try!
Tuesday, September 1, 2009
Side-by-side.. The lazy Android method..
One of the coolest things that the Android has out of the box is the "side-by-side" screens that make up the home screen. For a project that I am working on, it seems like this type of layout would be really useful. So, I set out trying to find out how to do it.
A bit of Googling found this article. I grabbed the code, threw it in Eclipse, and tried to make it work. Along the way Eclipse pointed out to me that the AbsoluteLayout has been deprecated. Because of that, I decided not to spend a bunch of time trying to figure out why my first few attempts using the code failed.
A bit more looking around found the HorizontalScrollView class. Using that class, along with a little creativity allowed me to make something that let me have a single really wide screen. But, what I wanted was something that snapped to the left or right to keep a single "screen" in focus.
The previously mentioned article had the code I needed to catch the events of a user dragging their finger across the screen. So, all I had to do was figure out how to put it all together. The end result is the HorizTwo class, which creates two "virtual screens" that snap to the left and right based on how far the user drags.
You can find the code on my download page here.
This code is really simple, and makes some potentially bad assumptions about the size and format of an Android screen. But, it seems like a good place for someone to start if they wanted to be able to have "side-by-side" screens.
There is one key point that may not jump out at you when you first look at the code. When you create the layouts that you want to show in each of the virtual screens, you need to give the layout an id. Normally, the Eclipse tools won't do this, so you will have to manually hunt the id field down, and set it. If you don't do this, you may not get the results you want.
A bit of Googling found this article. I grabbed the code, threw it in Eclipse, and tried to make it work. Along the way Eclipse pointed out to me that the AbsoluteLayout has been deprecated. Because of that, I decided not to spend a bunch of time trying to figure out why my first few attempts using the code failed.
A bit more looking around found the HorizontalScrollView class. Using that class, along with a little creativity allowed me to make something that let me have a single really wide screen. But, what I wanted was something that snapped to the left or right to keep a single "screen" in focus.
The previously mentioned article had the code I needed to catch the events of a user dragging their finger across the screen. So, all I had to do was figure out how to put it all together. The end result is the HorizTwo class, which creates two "virtual screens" that snap to the left and right based on how far the user drags.
You can find the code on my download page here.
This code is really simple, and makes some potentially bad assumptions about the size and format of an Android screen. But, it seems like a good place for someone to start if they wanted to be able to have "side-by-side" screens.
There is one key point that may not jump out at you when you first look at the code. When you create the layouts that you want to show in each of the virtual screens, you need to give the layout an id. Normally, the Eclipse tools won't do this, so you will have to manually hunt the id field down, and set it. If you don't do this, you may not get the results you want.
Subscribe to:
Posts (Atom)