Skip to main content

Acer Aspire One BIOS Recovery

From (

The Acer Aspire One has a built-in BIOS recovery routine, which can boot into a minimal BIOS environment via a special boot block to re-flash the BIOS, even if the system does not pass POST and does otherwise not boot anymore. This procedure is also known as Crisis Disk.

First format an USB flash drive with FAT. It does not need to be bootable.

Download the latest BIOS, and extract all files. Put both FLASHIT.EXE and the BIOS file with FD suffix in the root directory of the flash drive. The files must not be in a folder. Rename the BIOS file to ZG5IA32.FD before proceeding. It only works with this exact filename.

Turn the AA1 off, and verify both battery and AC adapter are plugged in.

Press Fn and Esc simultaneously, keep them pressed and press the power button. Release Fn+Esc after a few seconds. The power button starts blinking at this point. Press it once. The AA1 will now access the files on the flash drive and initiate flashing the BIOS. After a while the power button stops blinking, and the AA1 reboots by itself. Wait patiently.

If it doesn't reboot, but keeps blinking, wait at least a few minutes before turning it off, and try again.


Popular posts from this blog

More trickery with gnuplot dumb terminal

In my post "Plotting memory usage on console" the chart doesn't pan the data.
Now, using a named pipe, the effect got a little bit nicer.
First, we have to run the script to get a file filled with memory usage info:
./ > memUsage.dat &
Then we have to create a named pipe:
mkfifo pipe
Now we have to run another process to tail only the last 64 lines from the memUsage.dat
while [ 1 ]; do tail -64 memUsage.dat> pipe; done &
And now we just have to plot the data from the pipe:
watch -n 1 'gnuplot -e "set terminal dumb;p \"pipe\" with lines"'
And that is it!

uSleep on windows (win32)

I am facing a terrible issue regarding timing on windows.

Googling arround, I've found those infos:
Using QueryPerformanceCounter and QueryPerformanceFrequency APIs in Dev-C++
QueryPerformanceCounter() vs. GetTickCount()
How to time a block of code
And Results of some quick research on timing in Win32
With that I'm trying to write something like a uSleep function for windows:


voiduSleep(int waitTime){
__int64 time1 = 0, time2 = 0, sysFreq = 0;

QueryPerformanceCounter((LARGE_INTEGER *)&time1);
QueryPerformanceFrequency((LARGE_INTEGER *)&freq);
QueryPerformanceCounter((LARGE_INTEGER *)&time2);

// }while((((time2-time1)*1.0)/sysFreq)<waitTime);
}while( (time2-time1) <waitTime);

There is also already a nanosleep…

Checking auth.log for ssh brute force attacks

As I am letting my personal computer always on, as a homelinux server, I decided to check if someone is trying to breaking in with SSH brute force attacks.

First I did a grep for fail at the /var/log/auth.log. (grep -i /var/log/auth.log)

And I got lots of lines with the string "fail". With [grep -i /var/log/auth.log | wc -l] I figured out that were 1164 fail entries at auth.log

With an [grep -i fail auth.log | cut -d " " -f 6 | sort | uniq] I checked that were two kind of failed attempts:

So I wrote the following line to check with which users they were attempting to log:
grep Failed auth.log | cut -d " " -f 11 | sort | uniq | while read line ; do echo -n $line" "; grep $line auth.log | wc -l; done | sort -n -k 2

Here, the field position (the number 11 at the above command lines [-f 11]) may change in some systems. At my desktop at work, the username came at the position 9.

Here are the "top ten":
root 2922
user 2884