<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6947087257248862193</id><updated>2011-04-21T20:09:05.595-04:00</updated><category term='xorg'/><category term='app'/><category term='wrt'/><category term='hal'/><category term='deb'/><category term='kernel'/><title type='text'>I Need a Miracle</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jasonxh.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6947087257248862193/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jasonxh.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jason</name><uri>http://www.blogger.com/profile/01774974120241298844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp0.blogger.com/_lmthRqRqbS0/SH9mHiXBusI/AAAAAAAAAu0/vIOmNagdHNE/S220/MaskToy_256x256.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6947087257248862193.post-4785434387044057853</id><published>2008-09-09T04:04:00.010-04:00</published><updated>2009-04-14T01:38:14.899-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='deb'/><title type='text'>Launchpad PPA launched!</title><content type='html'>Just setup my &lt;a href="https://launchpad.net/%7Ejasonxh/+archive"&gt;Launchpad PPA&lt;/a&gt;. Current contents are&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_lmthRqRqbS0/SeQfd__EbkI/AAAAAAAAA6I/2hQsWZ7IzkA/s1600-h/ppa.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer; width: 320px; height: 166px;" src="http://2.bp.blogspot.com/_lmthRqRqbS0/SeQfd__EbkI/AAAAAAAAA6I/2hQsWZ7IzkA/s320/ppa.png" alt="" id="BLOGGER_PHOTO_ID_5324415259711401538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Packages are built for Ubuntu Hardy. I will keep uploading new packages when I encounter an interesting software that has no Hardy package available within my reach.&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;[Last update: 04/13/2009]&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6947087257248862193-4785434387044057853?l=jasonxh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonxh.blogspot.com/feeds/4785434387044057853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6947087257248862193&amp;postID=4785434387044057853' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6947087257248862193/posts/default/4785434387044057853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6947087257248862193/posts/default/4785434387044057853'/><link rel='alternate' type='text/html' href='http://jasonxh.blogspot.com/2008/09/launchpad-ppa-launched.html' title='Launchpad PPA launched!'/><author><name>Jason</name><uri>http://www.blogger.com/profile/01774974120241298844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp0.blogger.com/_lmthRqRqbS0/SH9mHiXBusI/AAAAAAAAAu0/vIOmNagdHNE/S220/MaskToy_256x256.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_lmthRqRqbS0/SeQfd__EbkI/AAAAAAAAA6I/2hQsWZ7IzkA/s72-c/ppa.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6947087257248862193.post-2722564445970450290</id><published>2008-07-08T04:44:00.014-04:00</published><updated>2008-12-10T20:36:14.416-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wrt'/><title type='text'>MMC hack on WRT54G v2 with OpenWrt Kamikaze 7.09</title><content type='html'>To begin with, this is definitely NOT a new hack. While there are a whole bunch of postings and howtos talking about this hack, I simply would like to share some of my own experiences and thoughts in this matter. Thus I will be referring you to other sources on particular subjects rather than stuffing this blog entry with all the details.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PRECAUTION: Hacking a piece of hardware is almost NEVER for the faint hearted.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;OK, let's kick it off!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;1. Hack the PCB board&lt;/span&gt;&lt;br /&gt;Simply put, we want to connect an MMC/SD card reader to several GPIO pins on the router mainboard. This is done by soldering pins of the card reader to corresponding solder points on the board. There is a pretty detailed wiki page on how to do this: &lt;blockquote&gt;&lt;a href="http://wiki.openwrt.org/OpenWrtDocs/Customizing/Hardware/MMC"&gt;MMC Wiki&lt;br /&gt;&lt;/a&gt;&lt;/blockquote&gt; &lt;span style="font-weight: bold;"&gt;ATTENTION:&lt;/span&gt; Please read carefully section "&lt;span style="font-weight: bold;"&gt;3.2. WRT54G v2.2 and WRT54GS&lt;/span&gt;" of the page before any soldering, even if you are working on a v2! You will need a multimeter for this project, both for finding the correct pins and for detecting short circuits.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;2. Customize the firmware&lt;/span&gt;&lt;br /&gt;Soft reboot will stop working correctly after the hack; instead it will take you to the failsafe mode. &lt;span style="font-weight: bold;"&gt;If you are just interested in a solution and don't want to wet your own feet, go to the end of this section and download my compiled firmware.&lt;/span&gt; The details of this bug can be found in this thread:&lt;blockquote&gt;&lt;a href="http://forum.openwrt.org/viewtopic.php?id=10143"&gt;Reboot Bug&lt;/a&gt;&lt;/blockquote&gt;The idea behind the workaround proposed by &lt;strong&gt;&lt;a href="http://forum.openwrt.org/profile.php?id=10511"&gt;migube&lt;/a&gt;&lt;/strong&gt; in the thread resolves this issue -- though not until we adapt his idea to Kamikaze. In Kamikaze, instead of modifying /etc/preinit, we need modify /etc/preinit.arch, and the magic place for inserting &lt;blockquote&gt;echo '0xb8' &gt; /proc/diag/gpiomask&lt;/blockquote&gt;is right before the line &lt;blockquote&gt;echo '/sbin/hotplug.failsafe' &gt; /proc/sys/kernel/hotplug&lt;/blockquote&gt;Note that the mask "0xb8" is calculated according to the gpio mask table in &lt;a href="http://wiki.openwrt.org/OpenWrtDocs/Customizing/Hardware/MMC"&gt;MMC Wiki&lt;/a&gt;. You can get the modified file here: &lt;blockquote&gt;&lt;iframe marginheight="0" marginwidth="0" style="border: 1px solid rgb(221, 229, 233); margin: 3px; padding: 0pt; width: 240px; height: 66px; background-color: rgb(255, 255, 255);" src="http://cid-53283db01178a2da.skydrive.live.com/embedrowdetail.aspx/OpenWrt/preinit.arch" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/blockquote&gt;Since during the preinit stage jffs partitions haven't been mounted yet, in order to edit this file you have to build it into the firmware and reflash your hardware. To do this all you need is the ImageBuilder package. (Thanks again to the OpenWrt team for making things so easy.) &lt;blockquote&gt;&lt;a href="http://downloads.openwrt.org/kamikaze/7.09/brcm-2.4/OpenWrt-ImageBuilder-brcm-2.4-for-Linux-i686.tar.bz2"&gt;Kamikaze ImageBuilder (i686)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://downloads.openwrt.org/kamikaze/7.09/brcm-2.4/OpenWrt-ImageBuilder-brcm-2.4-for-Linux-x86_64.tar.bz2"&gt;Kamikaze ImageBuilder (x86_64)&lt;/a&gt;&lt;/blockquote&gt;Unpack the archive and &lt;span style="font-style: italic;"&gt;cd&lt;/span&gt; into it. Then type &lt;span style="font-style: italic;"&gt;make&lt;/span&gt; to see help information. To overwrite the original preinit.arch file and build the firmware, you do the following (assuming you are at the root of the ImageBuilder folder): &lt;blockquote&gt;$ mkdir -p files/etc&lt;br /&gt;$ cp &amp;lt;new_preinit.arch&amp;gt;  files/etc/preinit.arch&lt;br /&gt;$ chmod +x files/etc/preinit.arch&lt;br /&gt;$ make image FILES=files&lt;br /&gt;&lt;/blockquote&gt;Now your new firmware should be ready in bin folder. An alternative to building it yourself is to use my compiled version, which includes four extra packages than the standard set: kmod-fs-ext3, e2fsprogs, libuuid (required by e2fsprogs), and fdisk.&lt;br /&gt;&lt;blockquote&gt;&lt;iframe marginheight="0" marginwidth="0" style="border: 1px solid rgb(221, 229, 233); margin: 3px; padding: 0pt; width: 240px; height: 66px; background-color: rgb(255, 255, 255);" src="http://cid-53283db01178a2da.skydrive.live.com/embedrowdetail.aspx/OpenWrt/openwrt-wrt54g-2.4-squashfs.bin" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/blockquote&gt;At last don't forget to flash it into your box. I assume all readers of this article know how to do it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;NOTE:&lt;/span&gt; After a soft reboot all port leds will be lit, but I haven't noticed any undesired behaviors other than this. No workaround for this is known yet. (If you know any please comment this entry.)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;3. Prepare the system&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Insert an empty SD card into the reader (of course only if you are not soldering on a card directly), and put your box back into shape. Everything else from now on can be done interactively from the router shell, i.e. no wires or flashing anymore.&lt;br /&gt;&lt;br /&gt;Boot the router, let it do all the initializations, and telnet into it. Then the first thing you need is the mmc driver. As described in &lt;a href="http://wiki.openwrt.org/OpenWrtDocs/Customizing/Hardware/MMC"&gt;MMC Wiki&lt;/a&gt; I recommend the &lt;a href="http://forum.openwrt.org/viewtopic.php?id=9653"&gt;optimized driver&lt;/a&gt; by &lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;&lt;a href="http://forum.openwrt.org/profile.php?id=9960"&gt;Cyril&lt;/a&gt;&lt;/strong&gt;. For WRT54G v2, you need the gpio5 version. Download and copy it to /lib/modules/2.4.34/ in your box. You also need to have kmod-fs-ext3, e2fsprogs, libuuid, and fdisk installed in your box. These are already included in my compiled firmware. Now on the router load the module: &lt;blockquote&gt;# insmod mmc&lt;br /&gt;# dmesg&lt;br /&gt;&lt;/blockquote&gt;A successful module init should give you something like this: &lt;blockquote&gt;[INFO] mmc_hardware_init: initializing GPIOs&lt;br /&gt;[INFO] mmc_card_init: the period of a 380KHz frequency lasts 518 CPU cycles&lt;br /&gt;[INFO] mmc_card_init: powering card on. sending 80 CLK&lt;br /&gt;[INFO] mmc_card_init: 80 CLK sent in 43090 CPU cycles&lt;br /&gt;[INFO] mmc_card_init: resetting card (CMD0)&lt;br /&gt;[INFO] mmc_card_init: doing initialization loop&lt;br /&gt;[INFO] mmc_card_init: card inited successfully in 488 tries (14704842 CPU cycles).&lt;br /&gt;[INFO] mmc_init: MMC/SD Card ID:&lt;br /&gt;02 54 4d 53 44 35 31 32 28 8b bb 5f 90 00 81 1f [INFO] Manufacturer ID   : 02&lt;br /&gt;[INFO] OEM/Application ID: TM&lt;br /&gt;[INFO] Product name      : SD512&lt;br /&gt;[INFO] Product revision  : 2.8&lt;br /&gt;[INFO] Product SN        : 8bbb5f90&lt;br /&gt;[INFO] Product Date      : 2008-1&lt;br /&gt;[INFO] mmc_card_config: size = 500224, hardsectsize = 512, sectors = 1000448&lt;br /&gt;[WARN] mmc_init: hd_sizes=500224, hd[0].nr_sects=1000448&lt;br /&gt;[INFO] mmc_card_init: set_blocklen (CMD16) succeeded !&lt;br /&gt;Partition check:&lt;br /&gt;mmca: p1&lt;br /&gt;&lt;/blockquote&gt;If you see any error in dmesg, most likely there's something wrong with your soldering. Checking for short circuits or wrong pins is all that I can suggest. As mentioned in the end of &lt;a href="http://wiki.openwrt.org/OpenWrtDocs/Customizing/Hardware/MMC"&gt;MMC Wiki&lt;/a&gt;, the recommended way of utilizing an external SD card is to make it your new root. &lt;a href="http://wiki.openwrt.org/OpenWrtDocs/KamikazeConfiguration/PackagesOnExternalMediaHowTo"&gt;ExternalMedia Wiki&lt;/a&gt; is an excellent guide on doing it, though not exactly working on my box. I've made some slight modifications to their method, and for clarity, I will include everything here. &lt;blockquote&gt;# fdisk /dev/mmc/disc0/disc&lt;br /&gt;(Erase the partition table and create one big partition)&lt;br /&gt;# reboot&lt;br /&gt;# insmod mmc&lt;br /&gt;# mke2fs -j /dev/mmc/disc0/part1&lt;br /&gt;# mount /dev/mmc/disc0/part1 /mnt -o noatime&lt;br /&gt;# cp -a /rom/* /mnt/&lt;br /&gt;# mkdir -p /etc/rc.mmc.d&lt;br /&gt;&lt;/blockquote&gt;Save the following file to /etc/config/bootfromexternalmedia &lt;blockquote&gt;&lt;iframe marginheight="0" marginwidth="0" style="border: 1px solid rgb(221, 229, 233); margin: 3px; padding: 0pt; width: 240px; height: 66px; background-color: rgb(255, 255, 255);" src="http://cid-53283db01178a2da.skydrive.live.com/embedrowdetail.aspx/OpenWrt/bootfromexternalmedia" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/blockquote&gt;and the following file to /sbin/init.tmp &lt;blockquote&gt;&lt;iframe marginheight="0" marginwidth="0" style="border: 1px solid rgb(221, 229, 233); margin: 3px; padding: 0pt; width: 240px; height: 66px; background-color: rgb(255, 255, 255);" src="http://cid-53283db01178a2da.skydrive.live.com/embedrowdetail.aspx/OpenWrt/init" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/blockquote&gt;and the following file to /etc/rc.mmc.d/S40switch &lt;blockquote&gt;&lt;iframe marginheight="0" marginwidth="0" style="border: 1px solid rgb(221, 229, 233); margin: 3px; padding: 0pt; width: 240px; height: 66px; background-color: rgb(255, 255, 255);" src="http://cid-53283db01178a2da.skydrive.live.com/embedrowdetail.aspx/OpenWrt/S40switch" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/blockquote&gt;and the following file to /mnt/etc/init.d/rcS (overwrite)&lt;br /&gt;&lt;blockquote&gt;&lt;iframe marginheight="0" marginwidth="0" style="border: 1px solid rgb(221, 229, 233); margin: 3px; padding: 0pt; width: 240px; height: 66px; background-color: rgb(255, 255, 255);" src="http://cid-53283db01178a2da.skydrive.live.com/embedrowdetail.aspx/OpenWrt/rcS" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/blockquote&gt;and the following file to /mnt/etc/init.d/network (overwrite) &lt;blockquote&gt;&lt;iframe marginheight="0" marginwidth="0" style="border: 1px solid rgb(221, 229, 233); margin: 3px; padding: 0pt; width: 240px; height: 66px; background-color: rgb(255, 255, 255);" src="http://cid-53283db01178a2da.skydrive.live.com/embedrowdetail.aspx/OpenWrt/network" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/blockquote&gt;Be sure to double check the paths before overwriting any file! Finally we are going to set the correct file permissions and activate the &lt;span style="font-style: italic;"&gt;bootfromexternalmedia&lt;/span&gt; hack: &lt;blockquote&gt;# chmod +x /sbin/init.tmp /etc/rc.mmc.d/S40switch \&lt;br /&gt;/mnt/etc/init.d/rcS /mnt/etc/init.d/network&lt;br /&gt;# rm /sbin/init&lt;br /&gt;# mv /sbin/init.tmp /sbin/init&lt;br /&gt;# sync&lt;br /&gt;&lt;/blockquote&gt;Unmount the card and reboot your box: &lt;blockquote&gt;# umount /mnt&lt;br /&gt;# reboot&lt;br /&gt;&lt;/blockquote&gt;Give it a couple of minutes and try to telnet into the box. If you see the prompt, hooray! You can now install your favorite softwares and web interfaces and everything as usual, except the HUGE boost in storage! If somehow you get stuck with the box, simply unplug and plug it, then it should deactive the &lt;span style="font-style: italic;"&gt;bootfromexternalmedia&lt;/span&gt; hack and take you back to the old prompt. A log file should appear as /bootfromexternalmedia.log, indicating which service choked the system.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RATIONALE:&lt;/span&gt; The problem with the original approach in &lt;a href="http://wiki.openwrt.org/OpenWrtDocs/KamikazeConfiguration/PackagesOnExternalMediaHowTo"&gt;ExternalMedia Wiki&lt;/a&gt; and my WRT54G v2 is that the system got stuck at network initialization, namely the step of setup_switch. My understanding is that when initializing the network switch of this board, some gpios used are also shared with our MMC hack, which in turn causes a conflict. My proposed workaround is to move the switch initialization to an earlier time, before mounting the SD card. Simple, isn't it! I've also modified it to be more debug friendly and failure recoverable.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_lmthRqRqbS0/SH9dc4EAlEI/AAAAAAAAAuo/n10v9gaw2fA/s1600-h/Screenshot-jason%40jason-laptop:+%7E-Downloads-router-OpenWrt-ImageBuilder-brcm-2.4-for-Linux-i686.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_lmthRqRqbS0/SH9dc4EAlEI/AAAAAAAAAuo/n10v9gaw2fA/s320/Screenshot-jason%40jason-laptop:+%7E-Downloads-router-OpenWrt-ImageBuilder-brcm-2.4-for-Linux-i686.png" alt="" id="BLOGGER_PHOTO_ID_5223996843439985730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;At last, a screenshot may give you a better idea of what will happen after this hack.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6947087257248862193-2722564445970450290?l=jasonxh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonxh.blogspot.com/feeds/2722564445970450290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6947087257248862193&amp;postID=2722564445970450290' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6947087257248862193/posts/default/2722564445970450290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6947087257248862193/posts/default/2722564445970450290'/><link rel='alternate' type='text/html' href='http://jasonxh.blogspot.com/2008/07/mmc-hack-on-wrt54g-v2-with-openwrt.html' title='MMC hack on WRT54G v2 with OpenWrt Kamikaze 7.09'/><author><name>Jason</name><uri>http://www.blogger.com/profile/01774974120241298844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp0.blogger.com/_lmthRqRqbS0/SH9mHiXBusI/AAAAAAAAAu0/vIOmNagdHNE/S220/MaskToy_256x256.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_lmthRqRqbS0/SH9dc4EAlEI/AAAAAAAAAuo/n10v9gaw2fA/s72-c/Screenshot-jason%40jason-laptop:+%7E-Downloads-router-OpenWrt-ImageBuilder-brcm-2.4-for-Linux-i686.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6947087257248862193.post-1938031418321211632</id><published>2008-03-29T15:43:00.004-04:00</published><updated>2008-07-17T11:39:51.591-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app'/><category scheme='http://www.blogger.com/atom/ns#' term='deb'/><title type='text'>Deb packages for sopcast 3.0.1 and gsopcast 0.4.0</title><content type='html'>Compiled on Ubuntu Feisty.&lt;br /&gt;&lt;a href="http://cid-53283db01178a2da.skydrive.live.com/self.aspx/Debs/sopcast|_3.0.1-1jason2|_i386.deb"&gt;sopcast_3.0.1-1jason2_i386.deb&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cid-53283db01178a2da.skydrive.live.com/self.aspx/Debs/gsopcast|_0.4.0-1jason1|_i386.deb"&gt;gsopcast_0.4.0-1jason1_i386.deb&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6947087257248862193-1938031418321211632?l=jasonxh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonxh.blogspot.com/feeds/1938031418321211632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6947087257248862193&amp;postID=1938031418321211632' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6947087257248862193/posts/default/1938031418321211632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6947087257248862193/posts/default/1938031418321211632'/><link rel='alternate' type='text/html' href='http://jasonxh.blogspot.com/2008/03/deb-packages-for-sopcast-301-and.html' title='Deb packages for sopcast 3.0.1 and gsopcast 0.4.0'/><author><name>Jason</name><uri>http://www.blogger.com/profile/01774974120241298844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp0.blogger.com/_lmthRqRqbS0/SH9mHiXBusI/AAAAAAAAAu0/vIOmNagdHNE/S220/MaskToy_256x256.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6947087257248862193.post-4532417632159800972</id><published>2008-02-07T12:26:00.002-05:00</published><updated>2008-06-05T12:47:05.730-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app'/><category scheme='http://www.blogger.com/atom/ns#' term='deb'/><title type='text'>Deb packages of Pidgin 2.3.1 for Ubuntu Feisty</title><content type='html'>Back ported from Hardy repository.&lt;br /&gt;&lt;br /&gt;Main packages:&lt;br /&gt;&lt;a href="http://cid-53283db01178a2da.skydrive.live.com/self.aspx/Debs/pidgin|_2.3.1-2ubuntu1+jason1|_i386.deb"&gt;pidgin_2.3.1-2ubuntu1+jason1_i386.deb&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cid-53283db01178a2da.skydrive.live.com/self.aspx/Debs/pidgin-data|_2.3.1-2ubuntu1+jason1|_all.deb"&gt;pidgin-data_2.3.1-2ubuntu1+jason1_all.deb&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cid-53283db01178a2da.skydrive.live.com/self.aspx/Debs/libpurple0|_2.3.1-2ubuntu1+jason1|_i386.deb"&gt;libpurple0_2.3.1-2ubuntu1+jason1_i386.deb&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Dummy package for dependency issues:&lt;br /&gt;&lt;a href="http://cid-53283db01178a2da.skydrive.live.com/self.aspx/Debs/gaim|_2.3.1-2ubuntu1+jason1|_all.deb"&gt;gaim_2.3.1-2ubuntu1+jason1_all.deb&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Dev packages:&lt;br /&gt;&lt;a href="http://cid-53283db01178a2da.skydrive.live.com/self.aspx/Debs/pidgin-dev|_2.3.1-2ubuntu1+jason1|_all.deb"&gt;pidgin-dev_2.3.1-2ubuntu1+jason1_all.deb&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cid-53283db01178a2da.skydrive.live.com/self.aspx/Debs/libpurple-dev|_2.3.1-2ubuntu1+jason1|_all.deb"&gt;libpurple-dev_2.3.1-2ubuntu1+jason1_all.deb&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Encryption plugins:&lt;br /&gt;You can choose between &lt;a href="http://www.cypherpunks.ca/otr/"&gt;pidgin-otr&lt;/a&gt; and &lt;a href="http://pidgin-encrypt.sourceforge.net/"&gt;pidgin-encryption&lt;/a&gt;. Check their websites for supported features. Personally I suggest pidgin-otr, due to its interoperability with other clients besides pidgin/gaim, e.g. Adium X on mac.&lt;br /&gt;&lt;a href="http://cid-53283db01178a2da.skydrive.live.com/self.aspx/Debs/pidgin-otr|_3.1.0-1jason1|_i386.deb"&gt;pidgin-otr_3.1.0-1jason1_i386.deb&lt;/a&gt; and  &lt;a href="http://cid-53283db01178a2da.skydrive.live.com/self.aspx/Debs/libotr2|_3.1.0-2jason1|_i386.deb"&gt;libotr2_3.1.0-2jason1_i386.deb&lt;/a&gt;&lt;br /&gt;or&lt;br /&gt;&lt;a href="http://cid-53283db01178a2da.skydrive.live.com/self.aspx/Debs/pidgin-encryption|_3.0-1jason1|_i386.deb"&gt;pidgin-encryption_3.0-1jason1_i386.deb&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6947087257248862193-4532417632159800972?l=jasonxh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonxh.blogspot.com/feeds/4532417632159800972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6947087257248862193&amp;postID=4532417632159800972' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6947087257248862193/posts/default/4532417632159800972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6947087257248862193/posts/default/4532417632159800972'/><link rel='alternate' type='text/html' href='http://jasonxh.blogspot.com/2008/02/pidgin-231-for-ubuntu-feisty.html' title='Deb packages of Pidgin 2.3.1 for Ubuntu Feisty'/><author><name>Jason</name><uri>http://www.blogger.com/profile/01774974120241298844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp0.blogger.com/_lmthRqRqbS0/SH9mHiXBusI/AAAAAAAAAu0/vIOmNagdHNE/S220/MaskToy_256x256.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6947087257248862193.post-2053779042707358185</id><published>2008-02-04T01:36:00.001-05:00</published><updated>2008-06-05T12:38:17.050-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='deb'/><category scheme='http://www.blogger.com/atom/ns#' term='xorg'/><title type='text'>Slow down your evdev mouse</title><content type='html'>&lt;span style="font-style: italic;"&gt;Evdev&lt;/span&gt; is a generic input device driver for &lt;span style="font-style: italic;"&gt;xorg&lt;/span&gt;. It provides basic support to a wide range of keyboards and mice. Particularly, sometimes the &lt;span style="font-style: italic;"&gt;mouse&lt;/span&gt; driver may not work well with your stylish mouse, e.g. my Logitech VX Revolution. Then give &lt;span style="font-style: italic;"&gt;evdev&lt;/span&gt; a shot and very likely it's gonna work like a charm. Generic as it is, however, &lt;span style="font-style: italic;"&gt;evdev&lt;/span&gt; lacks many advanced features, among which one remarkable feature is to slow down mouse speed. AFAIK the &lt;span style="font-style: italic;"&gt;mouse&lt;/span&gt; driver also lacks this functionality in its up-to-date version. To make it even worse, &lt;span style="font-style: italic;"&gt;evdev&lt;/span&gt; does not respect "&lt;span style="font-style: italic;"&gt;xset m&lt;/span&gt;" instructions, which could be used as a workaround for &lt;span style="font-style: italic;"&gt;mouse&lt;/span&gt;. Thus if you possess a mouse with really high resolution, the flying speed will likely render it useless with &lt;span style="font-style: italic;"&gt;evdev&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Now that's enough for background. I've made a tiny patch against &lt;span style="font-style: italic;"&gt;xf86-input-evdev&lt;/span&gt; version 1.1.5, to add a "&lt;span style="font-style: italic;"&gt;Speed&lt;/span&gt;" parameter to &lt;span style="font-style: italic;"&gt;evdev&lt;/span&gt;. It takes a real value between 0 and 1, and a line like this in your &lt;span style="font-style: italic;"&gt;evdev&lt;/span&gt; device section&lt;br /&gt;&lt;blockquote&gt;Option    "Speed"   "0.5"&lt;/blockquote&gt;will slow down your mouse by half. The option defaults to 1.0 meaning original speed.&lt;br /&gt;&lt;br /&gt;The patch is here &lt;a href="http://cid-53283db01178a2da.skydrive.live.com/self.aspx/Src/evdev-speed-1.1.5.patch"&gt;(evdev-speed-1.1.5.patch)&lt;/a&gt; and I've also built a deb package for it here &lt;a href="hhttp://cid-53283db01178a2da.skydrive.live.com/self.aspx/Debs/xserver-xorg-input-evdev|_1.1.5-0ubuntu2+jason1|_i386.deb"&gt;(xserver-xorg-input-evdev_1.1.5-0ubuntu2+jason1_i386.deb)&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6947087257248862193-2053779042707358185?l=jasonxh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonxh.blogspot.com/feeds/2053779042707358185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6947087257248862193&amp;postID=2053779042707358185' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6947087257248862193/posts/default/2053779042707358185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6947087257248862193/posts/default/2053779042707358185'/><link rel='alternate' type='text/html' href='http://jasonxh.blogspot.com/2008/02/slow-down-your-evdev-mouse.html' title='Slow down your evdev mouse'/><author><name>Jason</name><uri>http://www.blogger.com/profile/01774974120241298844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp0.blogger.com/_lmthRqRqbS0/SH9mHiXBusI/AAAAAAAAAu0/vIOmNagdHNE/S220/MaskToy_256x256.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6947087257248862193.post-5040536865599475976</id><published>2008-01-22T11:29:00.001-05:00</published><updated>2008-06-05T12:35:15.702-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hal'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>Let HAL work with thinkpad_acpi</title><content type='html'>With the new thinkpad_acpi module succeeding ibm_acpi, there is one great thing going on. Hot key presses are now sent to the input layer, which means you can handle them as real key press/release events and throw those ACPI handlers into garbage bin. The current version of HAL, however, is  not working well with the event device created by thinkpad_acpi. Newer kernels come with SW_RADIO switch event which is the only SW bit used by thinkpad_acpi, but HAL fails to follow up the steps. Thus the pre-probing during HAL's process of adding a new input device will fail with no supported SW bits found. Simply put, HAL will not listen on that event device, which most probably renders it useless unless you write your own event handlers for it.&lt;br /&gt;&lt;br /&gt;As simple as it is, I spent quite some time digging it up from the source code. Then when I posted it to the HAL mailing list, Ben Liblit kindly pointed me to &lt;a href="https://bugs.freedesktop.org/show_bug.cgi?id=13803"&gt;this bug entry&lt;/a&gt;, where he provided a nice patch for HAL. Trust me, I searched around it really hard before getting into the source code, and Google failed to get me this link. Shame for Google. ;)&lt;br /&gt;&lt;br /&gt;So if your HAL is 0.5.10, just apply the patch. Make sure your linux/input.h is new enough to contain SW_RADIO. With earlier versions, try searching for every appearance of SW_HEADPHONE_INSERT and make modifications accordingly.&lt;br /&gt;&lt;br /&gt;With HAL 0.5.10, you can get quirks from &lt;a href="http://people.freedesktop.org/%7Ehughsient/quirk/index.html"&gt;this page&lt;/a&gt; to get correct keymaps (and other stuff) for your model. With older versions, like me, you can use my little program to map your keys your way.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cid-53283db01178a2da.skydrive.live.com/self.aspx/Src/thinkpad-acpi-keys.tar.gz"&gt;thinkpad-acpi-keys.tar.gz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Compile setevkeycodes.c and put it in /usr/local/sbin. Install thinkpad-acpi as a service and copy thinkpad-acpi-keymap to /etc/default. If you prefer to use different paths, modify thinkpad-acpi script accordingly. FYI, the keymaps in thinkpad-acpi-keymap are my current settings, on a T60.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6947087257248862193-5040536865599475976?l=jasonxh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonxh.blogspot.com/feeds/5040536865599475976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6947087257248862193&amp;postID=5040536865599475976' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6947087257248862193/posts/default/5040536865599475976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6947087257248862193/posts/default/5040536865599475976'/><link rel='alternate' type='text/html' href='http://jasonxh.blogspot.com/2008/01/let-hal-work-with-thinkpadacpi.html' title='Let HAL work with thinkpad_acpi'/><author><name>Jason</name><uri>http://www.blogger.com/profile/01774974120241298844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp0.blogger.com/_lmthRqRqbS0/SH9mHiXBusI/AAAAAAAAAu0/vIOmNagdHNE/S220/MaskToy_256x256.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6947087257248862193.post-6867123977617823169</id><published>2008-01-15T22:16:00.000-05:00</published><updated>2008-01-15T22:38:41.952-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>A subtle change in event interfaces with the new kernel</title><content type='html'>I'm finally fed up with the stock kernel 2.6.20 of Ubuntu feisty, because I want to try out the iwlwifi driver for my intel 3945 wireless card. The new kernel is 2.6.23.13, and I noticed a subtle change in event interfaces, which breaks acpi_fakekey for many special keycodes. It's when you &lt;span style="font-weight: bold;"&gt;write an "unsupported" keycode to an event device&lt;/span&gt;, the old kernel will take it and propagate it to all processes listening on that device, but the new kernel just ignores it, pretending nothing has happened. Here I use the term "unsupported" to refer to being unmasked by the device keybits. acpi_fakekey is doing a pretty simple job here: find the first keyboard device and write the key press/release event to it, without regard to the true capabilities of that device. Now you see how this change breaks it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6947087257248862193-6867123977617823169?l=jasonxh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonxh.blogspot.com/feeds/6867123977617823169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6947087257248862193&amp;postID=6867123977617823169' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6947087257248862193/posts/default/6867123977617823169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6947087257248862193/posts/default/6867123977617823169'/><link rel='alternate' type='text/html' href='http://jasonxh.blogspot.com/2008/01/subtle-change-in-event-interfaces-with.html' title='A subtle change in event interfaces with the new kernel'/><author><name>Jason</name><uri>http://www.blogger.com/profile/01774974120241298844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp0.blogger.com/_lmthRqRqbS0/SH9mHiXBusI/AAAAAAAAAu0/vIOmNagdHNE/S220/MaskToy_256x256.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6947087257248862193.post-859831317369109087</id><published>2008-01-08T00:27:00.005-05:00</published><updated>2008-06-05T12:27:05.572-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app'/><category scheme='http://www.blogger.com/atom/ns#' term='deb'/><title type='text'>deb packages of clewn 1.13</title><content type='html'>I recently discovered clewn, a nice piece of software that glues gdb and gvim together to form a "integrated" debugging environment. It lets you set breakpoints "visually" and step through your program in quite a interactive manner. Its "point and pop up" style of displaying variable values is also very fancy and convenient. As the communications are done through NetBeans, it's also possible to debug remote programs in your local gvim window.&lt;br /&gt;&lt;br /&gt;Quote the descriptions from their &lt;a href="http://clewn.sourceforge.net/"&gt;website&lt;/a&gt;:&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;        Clewn implements full gdb support in the vim editor: breakpoints, watch        variables, gdb command completion, assembly windows, etc.        &lt;/p&gt;         &lt;p&gt;        This may be done in two different ways, using clewn or vimGdb.        Clewn is a program controlling vim through the netBeans socket interface, it runs        concurrently with vim and talks to vim.        Clewn can only be used with gvim, the graphical implementation of vim,        as vim on a terminal does not support netBeans.        VimGdb is a vim patch implemented as a vim optional feature.        &lt;/p&gt;         &lt;p&gt;        Both alternatives use the same base source code to interface with gdb.        Clewn, as a standalone process, needs its own terminal.        This is not the case with vimGdb, but a drawback        is that a different patch must be applied to each new Vim version.&lt;/p&gt;         &lt;p&gt;They both share the same features set, except clewn supports some features        that vimGdb does not have:&lt;/p&gt;         &lt;ul&gt;&lt;li&gt;display of gdb expression values in a balloon&lt;/li&gt;&lt;li&gt;gdb `run' commands do input and output on the clewn terminal,         while vimgdb users must use the gdb 'tty' or 'attach' commands to         control the debuged program input/output&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;I made the deb packages on an Ubuntu Feisty, i386. Not tested on other distros but should work as long as dependencies are satisfied.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cid-53283db01178a2da.skydrive.live.com/self.aspx/Debs/clewn|_1.13-1|Fjason1|_i386.deb"&gt;clewn_1.13-1~jason1_i386.deb&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cid-53283db01178a2da.skydrive.live.com/self.aspx/Debs/clewn-vim|_1.13-1|Fjason1|_i386.deb"&gt;clewn-vim_1.13-1~jason1_i386.deb&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Grab &amp;amp; install them, then vim, :h clewn, and there you go!&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;UPDATE: April 3, 2008&lt;/span&gt;&lt;br /&gt;Repackaged in accordance with the &lt;a href="http://pkg-vim.alioth.debian.org/vim-policy.txt"&gt;&lt;span style="font-style: italic;"&gt;Debian Packaging Policy for Vim&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://cid-53283db01178a2da.skydrive.live.com/self.aspx/Debs/clewn|_1.13-1|Fjason2|_i386.deb"&gt;clewn_1.13-1~jason2_i386.deb&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cid-53283db01178a2da.skydrive.live.com/self.aspx/Debs/vim-clewn|_1.13-1|Fjason2|_all.deb"&gt;vim-clewn_1.13-1~jason2_all.deb&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6947087257248862193-859831317369109087?l=jasonxh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jasonxh.blogspot.com/feeds/859831317369109087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6947087257248862193&amp;postID=859831317369109087' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6947087257248862193/posts/default/859831317369109087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6947087257248862193/posts/default/859831317369109087'/><link rel='alternate' type='text/html' href='http://jasonxh.blogspot.com/2008/01/debian-packages-of-clewn-113.html' title='deb packages of clewn 1.13'/><author><name>Jason</name><uri>http://www.blogger.com/profile/01774974120241298844</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp0.blogger.com/_lmthRqRqbS0/SH9mHiXBusI/AAAAAAAAAu0/vIOmNagdHNE/S220/MaskToy_256x256.png'/></author><thr:total>0</thr:total></entry></feed>
