28-May-2013: Changing the default Wi-Fi hotspot channel on Android.

If you have an Android 4.x phone and use Wi-Fi tethering, you may have noticed that it uses 802.11g channel 6 and there is no configuration option to change it. For some reason Google engineers decided to hardcode this setting when HAVE_HOSTAPD functionality was added in ICS release. The hostapd configuration is in /data/misc/wifi/hostapd.conf. But this file is rewritten when starting Wi-Fi hotspot, so changing it won't help. What has to be changed is SoftapController.cpp that is used to build /system/bin/netd binary. Currently the SoftapController::setSoftap() API call ignores argv[7] (channel) if HAVE_HOSTAPD is defined. Proper fix would be to check if argv[7] is supplied and write it to hostapd.conf. That would require the tethering app to supply channel argument and have a configuration option for it.
A quick hack is to edit the binary file /system/bin/netd with a binary file editor, search for channel= string and change value 6 to a different value in range 1 to 9.

19-Jun-2012: Olschool x86 assembly stuff.

I was going through my old archives and found an intro that I wrote in 1997 and never quite finished. I decided to release the source code. This is some hardcore stuff written entirely in assembly. Lots of tweaks and optimizations packed in ~2KB self modifying executable doing environment mapping shading, z buffering, and rotating tori that was all the rage back in the day.
Without further ado Rust ASM intro full source code. Compile with Borland Turbo Assembler.

23-Nov-2009: Gateway LT31 update.

There have been some reports of patch freezing the box while changing the frequencies. This has been identified to be a hardware issue. Older revision laptops have clockgen chip ICS932S421BGLF and don't have any issues with frequency scaling or overclocking. Newer ones have ICS9248BF-96 (which in reality is a SLG84605) and will exhibit random lockups while changing frequencies. They also don't overclock that well. See this post confirming the issue.
I'm glad I have the older one.
My fixes for powernow-k8 module will be part of next kernel release.

19-Aug-2009: Gateway LT3103u hacking.

Managed to get PowerNow! working in Linux. I downloaded DSDT from ACPI, disassembled with iasl, fixed 2 errors and 1 warning, added _PSS table with 5 P-States - [email protected], [email protected], [email protected], [email protected], [email protected]. Compiled the DSDT table with iasl compiler and compiled it into kernel. See this guide on details how to incorporate custom DSDT table in kernel. Next step was to modify powernow-k8 Linux module to work with these P-States. powernow-k8 module has restrictions regarding allowed frequencies. It refuses to work with frequencies this low. Also, there is a bug in powernow-k8 module that prevented voltages lower than 0.8V from working.
dsdt.dsl - fixed DSDT table (source)
dsdt.hex - fixed DSDT table (compiled)

07-Aug-2009: Gateway LT3103u testing.

I bought the Gateway LT3103u Mini-Laptop for $399.99. Wiped the preinstalled Windows Vista Basic and Acer eRecovery partition and installed dual boot Windows XP and Gentoo Linux. For some reason Gateway decided to disable AMD PowerNow! in BIOS/ACPI, making power saving in Linux impossible. In Windows XP I used RightMark CPU Clock Utility to configure the processor P-states and undervolt (0.7V vs nominal 0.9V) the lowest P-state with CPU at 800MHz. Granted it was a pain in the ass to set this up so that unprivileged user can use it - see this post for information on how to set up RMClock to run as service. To get further power savings I installed the latest AMD Chipset and VGA drivers from Gateway site. I think installing WebCam and SDCard drivers also made some difference allowing USB devices to power down when not in use.
I'm getting 5 hours 55 minutes in BatteryEater Idle test with display brightness at 50% and WiFi connected and idle. This is definitely an improvement over stock system.
This CPU can be overclocked 30% using SetFSB utility. See this post for details.

16-Aug-2006: Microsoft Xbox hacking.

Finished video patching code for nkpatcher. The patch allows Xbox to be connected to VGA monitor and/or autoconvert 480i resolution games to 480p resolution.
nkpatcher10-vga10.diff - changes nkpatcher10 -> nkpatcher10-vga10
nkpatcher10-vga10.zip - full source code

From version 10 to version 10-vga10:
 * Added force RGB video feature. This will patch kernel system call
   AvSetDisplayMode to configure GPU for RGB signal. It will also patch
   Conexant and Focus registers to configure video encoder to send
   bi-level sync with correct colors. Xcalibur video encoder is not
   supported.
   Intended for connecting the Xbox to VGA monitor. Connect AV pack Y
   output to monitor green input, Pr to monitor red input and Pb to
   monitor blue input. The monitor must support sync on green. Special
   sync separator circuit is required if the monitor does not support
   sync on green signal.

 * Added feature to convert 480i video modes to 480p. This will patch
   kernel system call AvSetDisplayMode so that it sets video mode 480p,
   if mode 480i is requested.
   Enhances graphics quality for applications that run in 480i video
   mode only. Note that this feature will be active even if 480p video
   mode is disabled in msdash.

   Video patching will be done only if HDTV AV pack is detected.