James' Tech Blog

Author Archive

Western Digital Elements

by james on Jul.11, 2010, under Uncategorized

So I bought a Western Digital Elements 1TB drive last week. For some reason it’s a mystery what’s inside these devices. I decided to disassemble, open up, take apart, dismantle, autopsy or whatever you call it so that I can document what’s inside. Mine which has the model number “wdbaau001hbk-01″ on the bottom has a “wd10ears-00y5b1″ drive in it, WD Caviar Green SATA/64MB cache 5400RPM. I think it’s a pretty enclosure, but not at all necessary. I apologize, I can’t find where I found instructions to open it. It’s pretty straight forward. Use a knife or something with a good edge to pry it open a little. Then I used a guitar pick to go around the edge and pry the clips along the inside. I’m going to do some crazy stuff to it, more to come. Maybe some pictures!

Leave a Comment : more...

Mythvideo now compiled

by james on Mar.14, 2010, under Uncategorized

So, I switched to myth-0.22 awhile back because I finally got a sane database. No thanks to the mythtv guys, many thanks to the Gentoo guys for pointing out the bad behavior of mythtv not checking encoding formats and just assuming. I had been trying out the SVN version because 0.22 was broken in Portage. Long story short I haven’t been able to build mythvideo for months. Today I finally tried looking at the build log and internet searching. For reference here are the first few errors in the log file:
In file included from metadata.cpp:8:
/usr/local/include/mythtv/mythcontext.h:9:22: error: qptrlist.h: No such file or directory
In file included from main.cpp:18:
/usr/local/include/mythtv/mythcontext.h:9:22: error: qptrlist.h: No such file or directory
/usr/local/include/mythtv/mythcontext.h:13:23: error: qnetwork.h: No such file or directory
/usr/local/include/mythtv/mythcontext.h:13:23: error: qnetwork.h: No such file or directory
I stumbled upon someone else who couldn’t build that was getting similar errors to mine http://mythtv.org/pipermail/mythtv-users/2008-November/238546.html The problem was that the prefix for SVN is /usr/local/ whereas the ebuild prefix is /usr/ The quick and dirty solution:


mv /usr/local/include/mythtv /usr/local/include/mythtv-old
ln -snf /usr/include/mythtv /usr/local/include/mythtv

That solved the problem immediately, but I think the real problem is the ebuild. I checked the mythtv ebuild and the prefix is defined as /usr/, but the mythvideo ebuild does not have a prefix defined. I believe the solution is to define the prefix in the ebuild or make the symlink in the ebuild for mythtv.

Either way, I’m super-stoked! Now I can get back to encoding everything to something besides MPEG2 and watching it with mythtv instead of xine or mplayer.

Leave a Comment :, more...

iNoPhone Update

by james on Feb.28, 2010, under iNoPhone

So I decided to get smaller buttons for my iNoPhone. I had to unsolder the old buttons which wasn’t hard. The new buttons are smaller in diameter so it was harder to get them secured to the plastic face. There’s a blurry Katrina in the background.

Small buttons

I tested all the buttons and they seem to work. It’s a lot lower profile. If you lay it like it originally would be it looks almost like a regular mouse. I almost got some really small tactile switches, but I thought they might be too short.

Fashion Show

The latest fashions!

Fashion Show

It’s almost the same size as my HTC Hero.

Katrina phone

A comparison with Katrina, she’s a pretty big cat though!

Other updates on first post:

Charging works, I’ve done it a couple times now. The speaker/mic aren’t the best, but I think I just need more holes in the face plate.

Leave a Comment :, more...

Chromium OS uses Gentoo?

by james on Feb.27, 2010, under Uncategorized

Just poking around Chromium pages (you know “Google ChromeOS”) and found some interesting stuff. They have a page about building the OS http://dev.chromium.org/chromium-os/building-chromium-os/portage-based-build First the URL says it all Portage based build. Later in the page they have emerge-<board_name>. Then about ebuilds and their chromium-overlay.

Does it actually use Gentoo? I’m not sure what their overlay has, but it seems like they are using Portage to build and maybe some Gentoo patches along the way. Check out the part about dependencies. It clearly has eselect ebuilds and gentoo-syntax for vim. Also, core-utils with -vanilla USE flag (as in include Gentoo patches). Why use Portage though? Especially since the user already has a working system and can install missing dependencies. Why not use Paludis? Well Google isn’t the only ones to ever use Portage in their project. I believe Openembedded’s bitbake is Portage based also.

Anyways, way to go Gentoo! Helping the world reach a brighter tomorrow!

Leave a Comment :, , more...

Shell and PHP script for dynamic IP address

by james on Dec.05, 2009, under Remote Admin

This is the second post in the series “Remote admin your mama’s gentoo boxen” This post I will be going over how I am going to handle the “dynamic” IP address on the WAN of my router. I say “dynamic” because I’m not really sure how dynamic it is. It’s likely only dynamic in the way that Comcast could give it to someone else (like if they wanted to pay for it) and there’s nothing I could do about it (unless I told them I would pay more for it!).

You probably just said to yourself, “DyDNS! Don’t they have services for that already?” The answer is yeah, they do, if you want your router to have a URL and probably be poked at more. Oh and dydns has sent me emails before about my IP not being “dynamic enough” and that I should “use static registration!” Besides, this way I can encrypt my IP not only when I update it, but when the client retrieves it. Not to mention client authentication.

Here is the scheme:

Router runs ash script reporting IP to remote server

Server does it’s thing and records IP

Client runs bash script getting IP from remote server

From there the client knows the router IP and can connect with reverse SSH.

Here comes some code. I would have prefered to write this in PERL but my router doesn’t have PERL! Also, less dependencies on client. Everyone has a shell. I decided to send the IP as hexadecimal without separators. As I’m not really proficient at shell scripts I looked up how to convert IP’s to hex: http://blog.mecworks.com/articles/2007/07/05/bash-scripting-tip-convert-ip-address-to-hex/ I did some fun stuff for the client. It probably looks horrible, but it should work.

First up is the router script:


#!/bin/sh
SUCCESS=1
while [ $SUCCESS -eq "1" ]
do
RTR_IP=`ifconfig eth0.1 | awk -F "[: ]+" 'NR==2 {print $4}'`
UPDATE_IP=`printf '%02X' ${RTR_IP//./ }; echo`
SUCCESS=`wget -q -O - "http://www.ultravstudios.com/myphpscript.php?update=$UPDATE_IP"`
sleep 5
done

I’ll break it down for y’all. It loops until it works. We use ifconfig to get the IP of WAN (eth0.1), use printf to turn it into 8 character hexadecimal, send it to the special secret PHP page. The PHP page will return a value 0 on success 1 on error. Next is client side


#!/bin/bash
GET_IP=`wget -q -O - "http://www.ultravstudios.com/myphpscript.php?get=0"`
K=`printf "%d". "0x"${GET_IP:0:2} "0x"${GET_IP:2:2} "0x"${GET_IP:4:2} "0x"${GET_IP:6:2}`
RTR_IP=$(echo ${K%\.})

So this one’s really easy.  Get the value from the special secret PHP page. Turn it back to decimal with period separators. Chop the last period off. Okay, so that’s just the part to retrieve the IP. Next is my PHP code for the remote server. It seems like WordPress doesn’t like me adding php tags?!


$filename = "supersecretfilename";
//open file and get old ip
$file = fopen($filename, 'r');
$old_ip = fgets($file);
if ($_REQUEST['get'] == "0") {//the client does want the ip
print $old_ip;
fclose($file);
return;
}
//so the rest means that the client does not want ip
if (is_null($_REQUEST['update']) || $_REQUEST['update'] == "") {//there is not data
fclose($file);
print "1"; //tell client there was error
}
elseif ($_REQUEST['update'] == $old_ip) {
//there was no update close file and return
fclose($file);
print "0";
return;
}
else {//ip is new
fclose($file);
$file2 = fopen($filename, 'w');
fwrite($file2, $_REQUEST['update']);
fclose($file2);
print "0";
}

Apparently I comment my php code more than my bash! So it’s pretty dumb right now. There is no authentication, no encryption, very few fail-safes. If my router is somehow having problems updating the IP, like the script doesn’t work, it will try forever until it works. I assure you, this is just the beginning, a quick hack to get things rolling.

Leave a Comment :, , , , more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Blogroll

A few highly recommended websites...