Author Archive
Hacking the ZTE MF627
Its been a while since I’ve done a good hack article. so again I’m back onto my favourite topic of 3G modems. Thanks to the generous promotions at 3dongles4free I’ve been able to pickup a new Three dongle for next to nothing. As I’ve already got my E160G I didn’t really need this to be on the Three network.
After a quick search around and a few suggestions from existing mailing lists I’ve found out that a hacked firmware exists and these cheap and cheerful dongles can be flashed to allow any SIM card to be used. This should be a simple job of updating the software and using the new SIM card.
First of all, grab the software pack from Rapidshare, due to the questionable nature of this copy of the firmware no one has been willing to host it on their own hosting, and I’ll keep to that idea. Extract the files from the RAR and you should have a firmware upgrade, and a installation folder for the connection software. As the existing Three connection software is very limited, the software package includes the Telstra version which allows you to define your own settings.
Before you attempt the software upgrade, you need to remove any existing Three software, install the Telstra version and remove your SIM card from the dongle, then simply plug it in and run the firmware upgrade. This process will take around 15-25 minutes and once it’s done it’ll give you a prompt. During the upgrade do not power off your PC or remove the dongle from the USB socket. This will brick your dongle rendering it completely useless.
Now, put in your non-Three SIM card and plug it back into your PC, the Telstra software should start-up and try detect the device, you need to configure the software for your provider’s APN settings, but the PDF document included with the software package will give you all the details you need.
Remember, I take no responsibility for people bricking their equipment, you have been warned.
LUGRadio Live 2009
Jono Bacon has announcedthat LUGRadio Live 2009 is happening and the basic website is now up and available. So for all that have not heard about LUGRadio Live before, let me give you a brief overview.
LUGRadio Live was a spin-off of the successful LUGRadio podcast, the guys decided that there was no decent open source conferences in the UK so decided to setup their own. The conference is in its fourth year, even though the podcast has finished. LUGRadio Live is described as a “rock conference”, everything is light-hearted and easy going but it attracts some big speakers right across the open source community.
If it sounds interesting, checkout the website, register your interest on Upcoming or Facebook, and follow the Twitter or Identi.ca users.
Woes of Webmin
My name is Andrew Williams, and I used to be a Webmin user.
During the last year or so, I’ve used Webmin and Virtualmin to manage my VPS hosting. For those who don’t know, Webmin is a web based server management console built on Perl, it allows each service to be managed by the use of modules, which you can install/uninstall to create a customised interface for your machine. With the addition of Virtualmin, the Webmin interface becomes a virtual hosting console much the same as Plesk or CPanel.
Webmin has a murky past, several high profile exploits existed for the system and it’s been advised for the last 10 years or so not to install it unless you really need to. Giving world access to Webmin was generally advised as stupid and silly. While Webmin is now up to date with it’s security it still leaves a bitter taste in the mouth of the administrator world and people who use it are usually noted as “newbies”.
I originally went with Webmin/Virtualmin as I was still hosting the few remaining customers of Blueshift Media. While I have the technical skills to work without it, the customers didn’t. The system gave a simple interface for the users and allowed them to add in basic stuff like new email addresses and aliases. To work around the security issue I only allowed access via SSH and port tunnelling, that way the user would have to be authenticated with the server before accessing the system.
Over the next year or two I started using Webmin to do my daily administration tasks, as working outside of Webmin once it’s installed can open you to a world of pain, Webmin keeps track of some configuration in it’s internal database, not in the external configuration files. Over time I become comfortable with the system and my technical skills slowly slip away from me, why do I need to know the in and outs of a program if Webmin can do it all for me?
Today, I learnt the hard way. I had a issue with Postfix content filters and I spent 10 minutes faffing in the Webmin console only for it to be a five second fix in the main.cf file. In a further similar fault I had to read up on Postfix Virtual file format as I’ve totally forgot how it’s supposed to be formatted, somehow the file had got munged and I had to reconstruct what I could.
Then it clicked.
Since I’ve installed Webmin I have been wrapped up in cotton wool, not actually touching the underlying the system and just using this fluffy interface to do my work. This is all well and good in the desktop world but in the server world your risking security and your knowledge of the underlying system.
So, today, I’ve officially removed Webmin, and I’ll never to return again. It’s time to actually learn my trade again and start using the distributions as they’re meant to be.
Importing History into Git
With my recent move over to Git for my VCS Home solution I decided to start afresh with new repositories and not migrating the history over, in the last few days i’ve noted that it was a very bad decision and having the full history will always be useful. Now i’m stuck in the situation of two repos with different histories. How do you reconcile these two trees into one full history tree?
First of all we need a working Git version of your existing repo, in my case, it’s in SVN, so I used the git-svn tool to import my svn repository.
$ cd ~/dev/ $ git svn clone http://tensixtyone.com/svn/home/trunk/bash
Git then downloads each SVN commit and imports it, this can be quite slow on large repositories but thankfully mine was only 20 or so commits. Now you have your originally repository in Git format the few final steps will bring in the changes you have done in the new repository.
To import the history we are going to generate a set of diffs, while this sounds less than ideal it is really the only clean way to get your new commits into your old repository, attempting to pull the commits in will throw errors as the commit hashes will not match.
First of all you need to find out the hash of your first commit in your new repository
$ cd ~/.dotfiles/bash
$ git log
...
commit ec508803a080f2146231fb4cd396cc18a2906a9b
Author: Andrew Williams
Date: Sat Apr 11 02:32:07 2009 +0100
Imported initial bash files
Then generate the diffs since that initial commit
$ git format-patch ec508803a080f2146231fb4cd396cc18a2906a9b..HEAD 0001-Added-bash_logout-file.patch 0002-Updated-bash-config-files.patch 0003-Updated-a-few-aliases.patch 0004-Updated-prompt-to-detect-if-we-re-using-vcsh.patch 0005-Fixed-nano-alias.patch
Now you have your fresh diffs, you need to import them into your existing repository. In addition i’m importing these into a new branch.
$ cd ~/dev/bash/ $ git branch new-bash $ git am ~/*.patch
The am command is mostly used to apply patches from a mailbox but for this case we can just tell it to use the patch files instead. After the command has completed you should be able to check git log and be able to see all the new commits.
Once your happy with the patches, it’s a case of switching to master and merging the changes.
$ git checkout master $ git merge new-bash
One thing to note, after this process the commits will have different hashes, so it wont be a simple case of pushing to your remote repo. I’d only recommend doing this if you have to, i’m sure that a better proceedure exists but this is what worked for me.
OBLogout 0.2 Released
I have to say, hell has actually froze over. I’ve been promising this release for months now and I never thought i’d actually get it out the door. Due to numerous showstopping bugs and hitches this release has seen numerous delays. Finally, we’re there.
OBLogout is a logout and shutdown script designed with Openbox in mind, it’s simple, themeable, extendable, and useable even on a low powered machine like a EeePC. This new release sports alot of new features:
- Keyboard shortcuts - each button can have a shortcut key assigned to it
- Customisable commands - allows for you to modify what each button does.
- PolicyKit support - allows for everything to work well with HAL.
- Better theme support - themes are easier to setup and change.
If your interested, drop over to the Launchpad project page. At the moment i’ve got packages for Ubuntu Intrepid and also Arch, if anyone wants to contribute any others then please drop me a mail.
So now I storm onto the 0.3 release, I’ve got a few blueprints that I want to clear on this release but i’m always welcome to new ideas. If you have any suggestions then raise a blueprint on Launchpad.
The version controlled home directory
For the last year or two i’ve been using SVN to store my common configuration files, this has worked wonders and has enabled me to move my config seamlessly between systems with a few simple commands. In the last day or so i’ve decided to move from SVN to Git as my control system, and now I think it’s a time to do a post on why exactly i’m doing this.
The idea of a version controlled home directory stemmed from people storing their /etc config files in CVS, this allowed for any modifications to be tracked, tested, and if worse came to worse, rolled back without much hassle. These ideas can be very useful for the end user, imagine you want to fiddle around with your terminal settings but forget to make a backup of your original settings, the time you spend trying to fix it back can be avoid with a simple vcs command. Another situation that I often get into is when you format or move to another system, a few quick commands can return your config and no pain of trying to remember your favourite settings.
So, how do we do this?
Each person has their own method, and hopefully I’ll describe my little world to everyone in a easily digestible way. It’s neither pretty or easy but it works for me.
My SVN version was very simplistic, a single repository broke down into “packages”, which contained the batch of config files for each program, such as “irssi” or “bash”, these would live under “trunk” in the repository.
~/trunk $ ls abook gtk2 ikog keepass-private mutt ssh tin gnupg-private hamachi irssi mozilla pine ssh-private xchat
For each machine I made a new branch under “branches” then I would use the “externals” properties to pull in the packages that I needed from trunk. So, when I wanted to pull in my configuration I would simply checkout that machine’s branch into a folder then symlink the required files over as needed.
~/branches $ ls ithaca manex orion vektor
This took time to setup but once the initial linking was done it was a simple matter of managing the files in the single checkout folder.
This system served me well for a year or two, but with the increase of machines and the general pain of symlinks I decided I needed a new method. I reviewed a few examples but the one that stuck with me was Martin Krafft’s system using Git, MR and a few handy scripts. I’ve now managed to rework this into a similar system for myself.
First of all, you need a method of getting the configuration files in the location you require. Git has this excellent feature to having detached worktrees, this allows you to remove the need for symlinking all together. For example, we can setup a git repository in a storage directory then tell the repo to checkout the files to your home directory.
$ mkdir -p ~/.dotfiles/test.git $ cd ~/.dotfiles/test.git $ git init --bare $ git config core.worktree ../../
So now, you have the test.git repository, and the worktree is your home directory. Now it’s simply a case of checking in the files you require and commit them to the repo. This scenario is a little different from the original Git idea so a little bit of a workaround is needed to actually use the repo in this way. Two variables need to be configured for Git to use the detached worktree as desired.
$ export GIT_DIR=~/.dotfiles/test.git $ export GIT_WORK_TREE=~/.dotfiles/test.git/../../
Now, you can use the Git command as if you were in a normal Git worktree. This is a pain to work with by hand but luckily Martin also created a little shell script to set these variables as needed. It’s based on zsh but i’m in the process to converting this to bash to avoid a extra unneeded dependency on my part.
So, we can get the configuration files to the place they need to be, now we move onto actually packaging and distributing the files. I decided that Martin’s method works the best, using the mr tool you can configure and manage multiple repositories and automate the checkout and update of these. This with tool the management of your packages can be done by simply changing the config file of mr.
mr supports importing extra configuration files based on wildcards, this allows for a global configuration to be setup which will only include configuration on a per machine basis. For example in the current .mrconfig I have this.
[DEFAULT] include = cat ~/tools/mr/lib/* ~/.mr/* 2>/dev/null || :
Simply put, this will include any files in my ~/tools/mr/lib/ and ~/.mr/ folder. Then in my .mr folder I have a file for each type of package I have available
[.dotfiles/mr.git] checkout = git_fake_bare_checkout 'ssh://git.tensixtyone.com/mr.git' 'mr.git' '../../' [.dotfiles/bash.git] checkout = git_fake_bare_checkout 'ssh://git.tensixtyone.com/bash.git' 'bash.git' '../../' [.dotfiles/bin.git] checkout = git_fake_bare_checkout 'ssh://git.tensixtyone.com/bin.git' 'bin.git' '../../' [.dotfiles/ssh.git] checkout = git_fake_bare_checkout 'ssh://git.tensixtyone.com/ssh.git' 'ssh.git' '../../'
So when I execute the mr command this will checkout each of those repositories as needed. If I require any extra packages I can pull in another config file and drop it into the .mr folder.
Now we have the method and the configuration sorted, how do we get this onto a bare machine? Again, Martin has come to the rescue in a form of a script he has setup to do the initial bootstrapping of a fresh account, it pulls in the basic configuration for mr and then it’s a case of dropping in the require config files into the .mr folder. Job done.
While my system isn’t perfect yet, it is workable and very flexible. The benefit of being able to move my active configuration between machines with a few commands outweighs the time needed to setup and configure the system. If you are interested my public configuration files are available via gitweb, hopefully from the mass of files you can work out what i’m doing. For the bootstrapping script check the setup.git repository, for my mr configuration files check mr.git.
If your interested in setting up a version controlled home directory, I’d advise you to join the vcs-home mailing list and check out their archives and wiki. Also, remember there’s no all ruling version control system to use for your home directory, Git works well for me but it doesn’t for everyone. The idea is to have a system that works for you, while I’ve followed Martin’s example very closely, again, this wont fit all.
Irresponsible Development
Over the last few days a minor storm is brewing in the iPhone user community. A week or so ago a new application was released to the iPhone market called Infinite SMS, which touted a cost free method of sending SMS messages to anyone. What the developers didn’t tell the users is that they were using a free to use Google service which was currently in “Labs” status.
With a massive influx of new users, Google decided that it was in their best interest to suspend third-party access to the API, including cutting off existing GTalk users. Google warned the developers of Infinite SMS and the devs pleaded to Google to leave it open while they migrated, two days later Google pulled the plug.
Most developers would just say the service is unavailable and start apologising right? Well not InnerFence. They quickly posted a statement onto their website.
Google will soon block Infinite SMS and all other non-Google software from sending free text messages.
For now, Infinite SMS will continue to work, but when the block goes into effect, you’ll start getting an error every time you try to send a text message.
If you have comments for Google, you can visit their Text Messaging Google Group.
Google has claimed no grievance with Infinite SMS other than its success. Their given reason for the block isn’t abuse or wrongdoing; it’s that we brought too many users (and thus too much cost) to an experimental service.
So, in the face of a hoard of unhappy users the developers just fobbed them off with no responsibility. Then only to add insult to injury:
Apple does not give app developers any way to perform refunds. Hopefully, at 99¢ people will feel like our app paid for itself after only a few messages.
The users, obviously unhappy, have took to the Google Labs message board with their complaints. Some users are even trying to get Google to refund the 99¢ for the application.
Jackbauer24 tries to add some reasoning to the situation, but still misses the point:
I think that there is some confusion as to what it is that has happened here. There is a lot of bad will going around to the creators of Infinite SMS. In reality, the creators had nothing to do with Infinite SMS being shut down. It was a decision by Google and Google alone.
As for Google not wanting to foot the cost for free text messaging (I guess it’s true that nothing is really free) that is totally understandable. But what is kind of surprising to me is the fact that they did not choose to use this program as a source of advertising revenue. It would have been so easy for them to send text messages
with advertisements to their users.–they could even send a message after every text sent or received and I don’t think many people would have complained. I’m not sure why Google did what they did, but I
hope that they will reconsider.
If anyone actually read the service annoucement then you’ll see this service wasn’t a public API for pure SMS, yes, it was publicly accessible via GTalk and GMail services, but can you show me the actual Web API to send these messages? I can assume that Infinite SMS connected to GTalk via XMPP and sent SMS via the service. I feel Google is correct in blocking it as they were abusing their intended use for the service.
Some users have started a petition, to get Google to re-enable the service so they can get their SMS for free. Hell, why should they pay when Google can foot the bill? To quote a comment on the petition:
BRING BACK INFINITE SMS !!!! HOW WERE WE COSTING ANYBODY MONEY ! WE DESERVE THIS APP BECAUSE ALOT OF US ARE NOT MILLIONAIRES, GOOGLE ! GOOGLE SUX.
I’ll just leave you one nugget from hellogoodbye2124:
What is your problem Google? Why did you block Infinite SMS? What am I suppose to do now for texting my family and friends? Could you please unblock it? You guys are being really stupid about this.
Yes, there is no such thing as a free lunch.
A few days with Android
Last week I finally got round to ordering a T-Mobile G1 and I got accepted, and to be honest I was expecting my contract application to bounce like a rubber ball. I guess I left T-Mobile on good terms last time so they’re one of the last networks in the UK that will actually accept me for a new account. I’m quite a aficionado of mobile phones and I do like “smart phones”, so I’ve decided to write this brief overview of the handset and of Android in general.
Out of Box Experience
I ordered my handset online so I had the joy’s of Royal Mail to contend with, that alone is a separate post and UK followers will know the usual pain everyone goes through in regards to getting anything shipped by them. The first issue that tripped me up was that the SIM card was loose in the packaging and not even slid into the handset box. In a rush I nearly binned the SIM and scupper my chances of actually using the device for another week.
The G1 is very nicely boxed, almost in the same way Apple devices are usually done. Since the release of the iPod and it’s over the top fancy packaging a lot of device developers have been scrabbling to match that “Out of Box” experience, the joy of opening the packaging and having your device presented to you in soft black foam padding. The first major gripe was struck at this early stage, while unpacking the device and it’s related accessories I noted that my white phone has some very nasty black accessories. While the contrast of black and white may work well in some peoples minds, I’d personally like the accessories to be a matching colour.
The box included the standard extras, a quick start guide, a small manual, USB cable, charger and a wired headset. Nothing really to write home about. The manual is the usual introduction spiel, which I refuse to read. I decided to get the phone up and working and to have a play around.
What surprised me next is my first battle with the phone, trying to get the SIM card in the actual device. Turns out you have to use the little pull tab at the top of the phone to remove the back, of course the device or documentation didn’t have any mention of how to do this. Jo can vouch that I spent a frustrated five minutes trying to tear the back off without destroying the phone. A simple plastic pull tab would of sorted this, but I guess it’s the last thing on the manufactures’ mind.
Next came the activation, I thought being a non-tied phone that I wouldn’t have to jump through so many hoops like the iPhone, while this is true the actual procedure can be a little frustrating. Anyone who has visited my house can attest to the near Faraday Cage properties that it has for some networks, unfortunately T-Mobile is one of them, the signal levels in the local area are great, just not in my house. This presented a major issue when I was asked to login to my Google account to sync over various details, the phone then spent the next ten minutes trying to establish a GPRS connection to the outside world. After the tenth or so try it managed to get all the details it needs. I understand that the activation sequence can also do WiFi connection but I didn’t see any mention of this during the set-up, and I think it’s reserved for the people who have “rooted” their phones already, something I’ll want to avoid wherever possible.
So after much hissing, cursing, and a few cups of tea, I was ready to roll.
Applications
Almost everything on Android is wrote in Java, and I’m quite amazed that it runs as well as it does. While Google/OHA are still polishing the edges the OS seems very stable and easy to use, once you’ve worked out the basics of navigating around you’ll be flying through the applications in no time. The standard “tool set” included with Android will cover the 90% of users, the usual host of tools are included; SMS, Email, Web Browser, Call Manager, along with a few others you might not usually see, like IM.
As this is the “Google Phone” the standard software includes the usual Google mobile applications, Gmail, Maps, and Youtube. I’ve recently moved away from using Gmail, so I can’t really comment on how the application works, and the rest of them operate just as you would expect on the N95 or any other Series 60 handset. I’m not going to spend all day digging into specifics as anyone who has had a go of these apps will know what to expect.
The biggest seller is the Market, the Android team broke away from the strict market that you see on the iPhone and went with a more open process.This has allowed developers to create a wide range of apps in a very short period of time, including replacement applications for the built in-clients. One great example is K9Mail, which expands on the existing Email client to enable better interaction with IMAP servers and a few added features. I’m sure over time the market will grow, and with the introduction of the paid market we’ll see some of the big players start developing apps for it.
Overview
Ok, I’ve warbled on for a while about my usage of the phone, it’s still early days and I’m still not 100% up to speed with the handset. It’ll take time and I’m sure i’ll have more posts in the future. I’m starting to get my feet wet in the SDK and I’ve got my first “Hello World” application currently installed on my handset. So, Would I recommend the handset to anyone else? A resounding yes, it’s got alot of potential and anyone slightly technically inclined will love using it.
UKUUG OpenTech 2009
The UKUUG has announced OpenTech 2009 to be held in London:
What is OpenTech 2009?
Open Tech 2009 is an informal, low cost, one-day conference on slightly different approaches to technology, democracy and community. Thanks to 4IP for sponsoring the event.What do we need?
- Proposals from people who want to give a presentation, run a panel, organise a tutorial, or run a demo of something new and interesting on something that they think matters or getting people to help.
- Publicity - please blog this announcement, write a newspaper article, forward to mailing lists, and tell your friends!
What topics do we hope to cover?
- Mashups, open data and security
- Disaster politics and technology
- Future of media distribution
- Community engagement
- Democracy 2.0
- Highlights, lowlights and lessons learnt
- Long term thinking on big problems and massive Opportunities
- Tutorials & Workshops - share what you know
If you’ve got an interesting proposal that doesn’t fit into any of the categories above, please send it in anyway!
What have we already got talks or sessions about?
- ID, surveillance and data-sharing
- mySociety
- international disaster management technologies
We’re still looking for more talks on all our topics, so if you want to offer something, we’re waiting to hear your ideas.
How do I submit a proposal?
- Online form via http://www.ukuug.org/events/opentech2009/offer
- Deadline for submissions is midnight on Saturday 1st May 2009
Can I buy or reserve a ticket to the event?
Register at http://www.ukuug.org/events/opentech2009/list and we’ll email you nearer the time with more information
Any other questions?
Read the Submission page or email opentech@ukuug.org
More information at http://www.ukuug.org/events/opentech2009/
Hopefully, If the price is right, I’ll be able to make it down for the event. July is getting to be quite a packed month for events, with LUGRadio Live and State Of The Map.
Fighting the tides
A month or so ago, Phillip Newbrough of the CrunchBang Linux project made me a IRC Operator in the offical support channel, #crunchbang on Freenode. During the last few weeks the IRC channel has exploded with popularity, from a low average of 5-10 at the start of January, the channel now idles at around 35-45 users. This is a massive improvement over the course of a month.
With the influx of new users come a influx of new trolls, every channel has them, every channel loathes them. Unfortunately #! has not been exempt from this. It came to great shame when within the first few weeks of the channel getting popular we had to ban our first user. Banning is a last resort in my eyes, and in the case of this user he was disrupting the channel and offending numerous other users. Action had to be took, and now that user is serving a one week temporary ban.
So, what can we do to avoid this horrible situation? The times when it’s the trolls vs. the operators, the back and forth can alienate new users and turn other users against the established operators. This provides a very difficult situation for anyone to handle, and something we want to avoid in the channel. So, In response to the rapid growth of the channel we’ve picked a few new operators, people who we trust, and while they’re not seasoned IRC users they show the level head required to take on this role. In addition to that we’ve took on a new rule set to clearly define the boundaries of the channel, Now the users and operators will understand where the buck stops and know clearly between right and wrong on the channel.
So, what next? Well, we’re still in the process of guiding our new operators in the way of IRC moderating, this will take time but hopefully we’ll come out with excellent results. An addition to the logging bot (Scribbler) will allow for “incidents”, that is, kicks and bans from the IRC channel, to be reported to the correct people. We are clarifying our complaints procedure, for people who think they’ve been kick/banned unfairly. I’m sure you’ll get to hear more details as times go on, and I’ll even post some specifics in the near future.
