Saturday 24 May 2008

EEEpc note

Ok, got the 900, sorry this blog is very very late

Pros:
AMAZINGLY small, you wont believe how small it is until you use one
The keyboard is just managable
the Webcam is amazing quality when it works
More responsive than i imagined
The Extra 16GB SSD really helps
Wonderfully fast bootups (If you never plug it in to any accessories (other than charger) set the Boot Booster enabled under the BIOS, trims a second or two)

Cons:
Battery life less than expected
Wireless strength depends on the driver you use
Webcam and Webcam-mic not fully functional (currently) under Ubuntu 8.04


What I've done:
Managed to get a dual boot system between the Xandros OS and Ubuntu 8.04 by resizing my home partition on the 16GB SSD and installing in there (dont bother with a swap drive)
Grub works wonderfully and straight out of the install i still have both the standard and recovery boot options thru xandros.

As for install, use this
And for tweaking use this BUT to fix the sound you have to go back in and re fix alsa (the 700 tweak doesnt work for the 900)

  • Edit /etc/modprobe.d/alsa-base and change the line “options snd-hda-intel model=3stack-dig”to “options snd-hda-intel model=auto”

  • ALSO, run the following command:

sudo alsactl store
  • Run:

sudo alsactl restore

I think that was all i had to do for basic operations.

Also got Kismet and the Aircrack-ng suites working with a bit of giggery pokery with an aim of stealing my dads old GPS and getting gpsmap to work properly, My personal recommendation is to install both from source, in the case of aircrack, you need to go into the folder that was built and make sure that all of the generated binary files are copied to /usr/bin or /usr/sbin depending on how paranoid you are (I'm not) because the install script doesnt install airmon, aireply, ivstools, packetforge, and a few other things i cant remember off the top of my head

As for the kismet source, i use source=madwifi_ag,atho,atheros and instead of relying on kismet to open the card as monitor, i use airmon and wlanconfig to kill the other interfaces first, eg

sudo wlanconfig ath0 destroy
sudo airmon-ng start wifi0
kismet (i did the suidinstall of kismet so there is no need for sudo. for a single user system the suidinstall is probably easiest)

I cant really talk about the performance of aircrack because truth be told i wouldnt have the patience for a 900MHz to get thru that kinda work, i collect as many packets as i can and get my dual core 3GHz 64bit system to do the dirty work (also usually do this over ssh if i can get an alternate connection, am working on a system where the ivs file can be emailed and an email reply will be sent back, with either the key, or "MEGAFAIL")

Anyway
Battery life. thats a joke. Its less that the 701 my dad has. yeah, yeah, i know, its more powerful, bigger screen, that wud be fine if it wasnt just the UK getting the kneecapped batteries:

List of countries getting 5200mAh battery:TW,HK,USA,CAN,IT
4400mAh:UK

If anyone is reading this please go to http://forum.eeeuser.com/viewtopic.php?id=27140 and make your voice heard, cus i want the battery that was handed out to reviewers! (the forum explains it better than me)

Tuesday 13 May 2008

EEE Update etc


Just got a call from home saying that my EEE was delivered today, now thats what i call super fast delivery, kudos to clove for being so speedy

On another note my dad is cycling from ballymoney in northern ireland to montouliers in the south of france, he has an EEEpc 701 with him and hes been using it to make a blog here

Another Uni Project

If anyone is interested in Erlang B Calculations, very relevent to any communications or engineering students, I've written a little quick piece of code to calculate them.

There are several levels of functionality in the code.
Erlang B itself only has 2 variables, System load in Erlangs, and the number of "trunks" (read: servers/call center operators/phone lines), and its output is a blocking probability from 0 to 1

All three of these variables or none atall can be defined at runtime;
  • The desired blocking probability can be input to stop the calculation at that point. (default 0)
  • The Load can be defined (See Erlang A) (default 1)
  • The maximum trunks to be calculated (default 100)
The code uses the unistd.h library for argument parsing so is more or less unix only (or cygwin alternativly) and long doubles for more or less everything inside the code.

Having tested the limits, it kinda conks out then calculating large (read 1000 erlangs) on large trunks (got as far as 1234 trunks, then died)

When i get a bit of time i might optimise the factorial part so it doesnt run thru the entire factorial sequence for each number.

Anyway, the code is here. I'm not wasting my time laying out code on blogger.

I want

Jeff Han, a researcher at NYU, surpassed himself again with the most georgous multitouch display interface I've ever seen (surface/iphone eat your heart out). I always love watching TED talks, and if anyone really wants to see a good reason why Powerpoint should be killed, I'd recomment Hans Roslings talk on global poverty here

Monday 12 May 2008

Asus EEEpc

Just off the phone with Clove saying that my shiny new black eee 900 is winging its way to my homestead, which unfortunatly is not wer i am, but at least i wont be losing any time for revision (read: have any other reasons not to study)

I have to say I'm really disappointed with Asus's attitude to they're british customers regarding the battery issue and i really cant say any more about it except that were paying above the board globally, and not getting an equivalent product and an even less equivilant service.

Nevertheless I'll be installing Ubuntu as soon as i get my grubby little mits on it, and will hopefully get some pictures, maybe actually get off my ass and do a how to. Might install an internal bluetooth mod aswell.....

On a brighter note, i really have to say Clove have been fantastic, i ordered mine about a month and a half ago and called me back the next day telling me that they were looking at a mid may delivery date, and then called me when the white eee's came in stock at the beginning of the month, i pointed out that i had previously changed my order to the black, and they were great about it. Highly recommended! Not expensive atall either!

www.clove.co.uk

DISCLAIMER : no i dont work for them

Folding Code

I've been folding for a while now, and I'd previously written a really very cobbled together way of parsing my unitinfo.txt files, but, searching for something to do other than revise, I've written a similarly cobbled together but much shorter way of parsing my folding progress and telling me (as in speech) how far its going.

Required: Espeak, basic bash knowledge to adjust.

note: the espeak adjustments are just personal preference, so change them at will.

Its kinda a cheat cus it calls itself but isnt recursive. I'm just lazy


#!/usr/bin/env bash
case "$1" in
"-v")
points | espeak --stdin -s200 -v en+f4
exit
;;
"-w")
points | espeak --stdin -s200 -v en+f4 -w $2
exit
;;
*)
echo "Folding Stats at "&& date +%H:%M
echo "CPU1:" && cat /var/folding/foldingathome/CPU1/unitinfo.txt | grep Progress | cut -d'[' -f1 | cut -d' ' -f2
echo "CPU2:" && cat /var/folding/foldingathome/CPU2/unitinfo.txt | grep Progress | cut -d'[' -f1 | cut -d' ' -f2
exit
;;
esac

it doesnt look very pretty on the console but i think it sounds alright.

Better get some calculus done

::Edited for new version of code with wavfile output

Embedded C GPS Project

Afternoon folks, I'm supposed to be studying but dont have the heart to, so I'm documenting a recent project from Uni.

The remit was to be able to parse RS232 data coming in from a GPS unit and reformat it for a LCD display. I dont have the part numbers handy but I was programming on a 18F series PIC that supported C.

Most of the ancillary code is more platform dependant, such as working with the PIC interrupts etc, so for the purposes of this code snippit, assumme that a NMEA sentence (I used RMC and some RMB, but never really finished that bit) stored as a character buffer, and a structure, as defined, to store relevent data in.

PLEASE read up about NMEA sentence structure before continuing

typedef struct message
{
//date
int day, month, year;

//Time
int hour, min, sec;

//lat
int lat_deg;
float lat_min;
char lat_ref;

//lng
int lng_deg;
float lng_min;
char lng_ref;

}message;

Since NMEA sentences are comma separated values, I kinda cheated and iterated thru the string, replacing the commas with terminating characters and recording the next positions as character pointers.

for(i=0;i<BUFFERSIZE;i++){
if(end)buffer[i]=0; //wipe the rest of the sentence

if(buffer[i]==42&&check==1){ //asterix
check=0;
if(checksum==chr2hex(&buffer[i+1])) valid=1;
else valid=0;

i+=2; //get to the end of the checksum

end=1; //this is the end of the current sentence
}
if(check)checksum^=buffer[i];
if(buffer[i]==36){ //dollarsign

buffer[i]=0;

check=1;

AddToList(&(buffer[i+1])); //ignore first character

}
if(buffer[i]==44){
buffer[i]=0; //replace all commas with nulls
AddToList(&(buffer[i+1])); //add next position to list of words
}
}


The first character(dollar sign) is ignored because it is never needed beyond this point.

The NMEA sentence structure includes a asterix delimited checksum, i.e everything after the dollarsign and before the asterix is progressivly XOR'd and the hex value representation of this result is concatenated on the end of the sentence before transmission.

the chr2 hex function simply converts two ASCII characters to their Hex value equivalent.

AddToList, strangly enough, adds the pointer passed to it to a wordlist, which is an array of character pointers.

Now we have a list of pointers, because i used a character pointer array, and ended all the strings with nulls, we essentially now have individual strings for each part of the NMEA sentence, that can be addressed directly. eg:
{ //GPRMC
getTime(words[1],&incoming);
getDate(words[9],&incoming);
getLat(words[3],&incoming,*words[3+1]);
getLng(words[5],&incoming,*words[5+1]);
}

In this instance, the get functions all take two arguments, what to read from, and where to put it.

For anyone whos interested the full code is here

I guess i better do some work then.


Sunday 11 May 2008

Update

Yeah, suprise suprise, I'm actually gonna try and keep this up.

One of the major reasons for the delay since my last documented fiddle as been job hunting for a placement year next year, but I've wonderfully secured a position with Ericsson Ireland in their Athlone R&D centre. Pays good, experience is even better.

Beyond that a few other things have been making things hectic, not least of which is the impending Examination period so about the only techy thing I've been able to come up with has been a wipe and reinstall to upgrade to Hardy Heron (8.04) (I didnt update because i dont trust dist-upgrade's ability to do things my way, also meant i could blow out the cobwebs in my filesystem.)

As for that, i have to say I'm very impressed. I started out in my Linux days with Red Hat 3, when RH was OSS. Oh how times change.

I have to say tho that i was expecting more substantial differences; especially in the fact that I'm using the 64bit edition on 64 bit hardware but still have to get the stupid crappy 32 bit implementation layers for something as simple as flash (and thats not even working inside Firefox, thankyouverymuch).

Ahh, firefox, what can we say.... well, very little anymore i guess. Were all used to Firefox being a great browser but sucked up memory like an Altzimers Hooker, which allowed us to have sentences like "Everythings perfect except the memory".

Now that problem is sorted, were left with this slim slender spritely... well... fox. Now the other flaws are apparrant, like the (naturally tainted but still troublesome) security issues that just-keep-popping-up.

Ok, rant over, I love firefox, absolutly brilliant, even better now it doesnt sit on memory like a paraplegic elephant. I'm really just diverting the disappointing lack of 64 bit support across the board.

No Acrobat Reader.
No Official Google Earth. (something that could do with better math)
Actually, i cant think of many mainstream pieces of code that DONT need the 32bit interoperation libraries.

Anyway. I'll update when I'm less ranty