All posts by Matthew Gillespie (admin)

Unable to bind to the destination server in DNS

Ok, so this error message has been a royal PITA for me today. I’ve ran through numerous MS Knowledgebase articles, multiple forums, and all to no avail. The problem arose when an ASP script using CDONTs to send mail ended up placing all messages in the “Queue” directory… with no further processing. The solution: Live life by packet captures.

Oh, and make sure you’re reading them correctly.

It turns out Windows 2000 server (used for a webserver in this instance), performs DNS queries via TCP instead of UDP. The DNS servers that it was configured to use apparently had some issue – made evident by numerous TCP retransmits, and no actual query responses in any packet captures. Of course, nslookup uses UDP for DNS resolution – and UDP requests resolved fine.

Dig supports tcp queries using the +tcp flag. A simple query made it obvious that things were borked:

kovacs2 ~ $ dig +tcp -t a www.braindeadprojects.com @goofyassednameserver

; <<>> DiG 9.5.0-P2 <<>> +tcp -t a www.braindeadprojects.com @goofyassednameserver
;; global options: printcmd
;; connection timed out; no servers could be reached

I’ve scoured the net looking for a way to set Win2k to only use UDP DNS queries, to no avail. The real solution though is to fix the nameservers, which restarting the service did without issue.

I really wasted WAY too much time on this dumb issue. In retrospect, I would have installed Wireshark sooner, and performed a more controlled packet capture. Part of my problem was that I was actively using nslookup during packet captures, and not reading the captures thoroughly.

Request,response,request,response, request, response… all the while not noticing that TCP requests never received a response. RTFPcaps friends!

Embedded Devices and JTAG

Take a look at Mike Anderson and JTAGs. This is a really enlightening explanation of how to debug embedded linux devices w/ JTAG support, and it gives some great pointers for writing linux device drivers.

Mike Anderson is the Chief Scientist for The PTR Group, Inc. and really knows embedded linux devices. I didn’t get to attend the conference, actually I stumbled across this while working with the Linksys WRT54G-TM device.

The 54G-TM is a T-Mobile branded device, that apparently was (or maybe still is) sold by T-Mobile along w/ their WiFi capable phones. I guess the idea was that if you were within range of your 54G-TM, the call would run ala VOIP, otherwise it would use the actual cell network.

The device is great – the board layout has pads that male headers can be easily soldered onto. HairyDairyMaid includes schematics for a parallel port based JTAG cable, which can then be used to install DD-WRT, or whatever.

(If you look at the lower portion of the board you’ll see where JTAG headers are soldered)

As far as I can tell, using JTAG to directly write to flash is the only way to upload the firmware to the device. (TFTP and HTTP both fail). This 54G-TM also has a cpu fan soldered to the board and a heatsink installed on the CPU. (I didn’t do this myself, I actually bought this one that way. I have added headers to the other 4 I have, and flashing a 7.7M image of DD-WRT took 25423 seconds to complete on each device.)

Watch the video, it’s enlightening and Mike’s got a good sense of humor.

Magic isn’t real.

So, I’m in the process of moving – again.

I found it rather amusing the other day to see my current apartment listed on Craigslist as being “cozy”. A quick google search to define “cozy” returns an appropriate definition of “oversized dog house”.

Yeah, it’s small. Really small. So small that when I bought a small love-seat, it took forever to squeeze it through the entryway and up the flight of stairs to the ONE ROOM abode. And that room was basically the size of a large walk-in closet.

Ok, whine, whine, whine… what does this have to do with software or hardware projects? Well, getting the love-seat OUT of the apartment turned into a hard project. A REALLY HARD PROJECT. Here’s what happened:

I paid the guy that helped me move it in $40.00 to help me get it out. “If we got it in, we can get it out.” But after 45+ minutes of trying to get the P.O.S. back to the stairway, it became evident that this was a task that required some serious mathematics.

I’m not like John Nash in “A Beautiful Mind”. I’m more like Son in “Shotgun Stories”. (“I can divide up to 4 decimal spaces”.) So when the suggestion “Well, I’ve got a circular saw in the truck” came up, I knew we only had 1 solution.

Before:

Before...

After:

After...

And so now I’ve got to pay another $40.00 to have the carcass disposed of. (BTW, I love how it appears that Dylan is sadly walking thru some sort of furniture holocaust)

UML Block Device Issues

I spent about half an hour the other day trying to figure out why a new Usermode Linux 2.6 kernel wouldn’t boot. Most of the time I focus on the 2.4 kernels, since adding “TTY Logging” to that kernel is really easy. (Yes, I’m watching your every keystroke)

For some reason, every time I’d boot the kernel, I’d get:

Kernel Panic – VFS: Cannot open root device “98:0” or unknown-block

The obvious problem would have been misspelling the flag “ubd” “udb”… but that wasn’t it. After scouring the Internet for any help I could find (and coming up empty), it turns out I missed a really simple but necessary config option when compiling the kernel:

“CONFIG_BLK_DEV_UBD” – Don’t leave home without it.