Sunday, August 06, 2006

I decided to install the USB IR adapter I bought yesterday, and setup my phone.

What a pile of crap this adapter is. It came in a blue box, "USB to IRDA adapter for mobile phone users" it says on it, part number MI620.

Immediately upon taking the adapter out of the box, I noticed that the clip together nature of it wasn't very good, it was already falling apart.

I just pulled at the top a tiny bit and it came apart. The reason it felt apart is because the plastic clips are all squashed and broken, good quality manufacturing there.

I had a look in it, not much there, a couple of IR LEDS, a usb port, a chip, a crystal, not much else.

I put it back together, and then went to plug it in to my vmware machine.

Upon attempting to plug the adapter into the USB extension lead it came with, the adapter basically exploded, and the usb plug came straight off the pcb.

More poor quality manufacturing made obvious. The USB plug is supposed to clip onto the PCB, but the clips at the side weren't anywhere near squeezing onto the PCB.

I bent them in a bit, put the plug back on the PCB, resoldered it, and it was a hell of a lot better than when it was made. I clipped it all back together again, I think I'll have to superglue it together.

I carefully plugged it into the USB extension lead, made sure the vmware window was active on the pc, so that it would take control of the device when it was attached, and I plugged it in.

The 2k3 VM popped up, "new hardware found". I put the driver cd in my laptop, and copied the driver files across to the vm disk, I pointed the add hardware wizard thing at the files, and clicked through.

I didn't actually read the messages that were coming up, having installed drivers so many million times before, however this time I should have read them.

After clicking finish, a popup from the system tray said "an error occurred installing your new hardware". I checked device mangler, and it didn't show up as an extra port.

I rebooted the VM, no difference. I unplugged and replugged the adapter, and the wizard popped up again. This time I read what it was telling me.

When I told it where to get the driver from, instead of telling me it was installed, it was complaining that "a required section was not found in the inf file". Great.

I tried installing different drivers by doing it manually, installing a different version, but that just told me that the inf file wasn't "in the requested format" or something.

I decided to look for more drivers. This device seems to be based on the "Kingsun SF620" chipset, which seems like a fairly generic chipset, used in a bunch of these different adapters.

It doesn't have any linux support, bugger, there goes plan B, trying to find some phone software that runs under linux.

I managed to find a couple of other versions of the driver, apparently this chipset is also known as a "ww-600", but those drivers didn't work either, "Windows was unable to find the required software".

I also found another set of the same drivers I already from the CD that came with the device, these resulted in exactly the same errors, as expected.

I googled around, in regards to "the required section was not found in inf", and found mainly references to print drivers. I also found this page, about HP printers with the issue.

What a load of crap, it's like 50 pages of stuff to do to install the driver manually. Who the hell is going to do that?

I read through it all anyway, and found references to mucking around with inf files, restoring usb.inf, deleting infcache.1, I tried this stuff, it made no difference.

I noticed a compressed exe file with the drivers, I uncompressed it, and ran it, to see an error "error in sysdm.cpl missing entry:InstallDevice_RunDLL".

Great, so perhaps what this driver is trying to do to install doesn't work under 2k3., because M$ in their infinite wisdom have decided to change the API of the system control panel thing.

I decided to try replacing sysdm.cpl with one from another version of windows. A quick google only turned up one from NT4 SP6a, from 1999, hmm, great. I would have preferred from 2000, or XP, but we'll try this.

I downloaded that, backed up the existing sysdm.cpl, copied the NT4 one in (which asked me to overwrite one, hmm), and ran the command manually "rundll32.exe sysdm.cpl,InstallDevice_RunDLL" which resulted in the same error.

I then checked, and found that the file I had copied in wasn't the one running, it was exactly the same as the one I had backed up. Ah great, I know what's going on here, that retarded function that windows uses to replace your dlls if they get changed.

I really wish windows would just piss off and let me replace files, I know what I am doing (or at least I know better than it what I'm doing).

So now I needed to work out how to fix that, as soon as I deleted or replaced sysdm.cpl with a different one, windows just changed it back again.

I figured I could replace the one in the dllcache with the old one from NT4, and then just delete the one in system32, and windows woould retardedly replace it with the one from NT4, but alas no, it seems windows isn't as stupid as it looks.

It replaced the one in the dllcache with the "correct" (from 2k3) one (I have no idea where from), and then replaced the deleted one with the correct one.

I might just have to give in, and use the windows 98 box I built recently for recovering a hard drive, because 2000 wouldn't run as soon as the faulty disk was attached, but 98 didn't care, because it can't read ntfs.

That's real progress M$, when I have to use windows 98, because the stuff that comes out now just doesn't work.


I found a webpage that detailed disabling the WFP/dllcache crap, and made the change to the registry, but then noticed that it says it requires a kernel debugger attached to the serial port. Hmm.

It also mentioned that codered used it, so perhaps it works without a debugger. After a reboot, it was still working, bugger. Codered must have done something else to disbale that check. Perhaps I should just infect the machine with codered.

I couldn't use sfc to make any changes either, telling me "You must be an administrator running a console session in order to use the Windows File Checker utility." Argh. Windows goes out of its way to annoy me.

I wrote a batch file, that deletes the 2k3 version of sysdm.cpl, copies the nt4 version in, and tests for the required function, but that didn't work. The file goes in, but as soon as I try using it, WFP replaces it.

I logged in locally, and I used SFC to change the cachesize to 0, and then purged it, thinking that might work, but again, no, the file still gets replaced, and that function still doesn't exist, though perhaps it didn't exist in NT4 either, and that's part of my problem.

I suppose I could always get some enjoyment destroying the adapter, and buying a new one that's not a complete pile of crap, and comes with some useful drivers.


I even grabbed the sysdm.cpl from XP, and made my batch file load that in, but the InstallDevice_RunDLL function still didn't exist. Maybe that exe is for ME/98, and I'm wasting my time trying to get it to run on anything based on NT.


Anonymous said...

Hello! Yesterday I bought an adapter IRDA for a friend and turned out to be a SF-620. I have, in addition, a MA-620. I have made work the MA-620 at 9600 bps in linux, and I suppose that the SF-620 will also work. I wrote a detailed guide in Ubuntuforums [1].
I hope that it serves to you.



Mauro A. Meloni

10:21 AM  
Simon said...

Cheers, I looked at your post, and I followed the steps:

modprobe irda
modprobe ircomm
modprobe irtty_sir
mknod /dev/ircomm0 c 161 0
mknod /dev/ircomm1 c 161 1
chmod 666 /dev/ir*

irattach /dev/ttyUSB0 -d ma600 -s

I couldn't irattach, because I didn't have irda-utils installed, so I apt-get installed those.

I then tried to irattach again, but /dev/ttyUSB0 doesn't exist.

This could be for a couple of reasons, it could be because I had attached the device to VMWare, and it might need to be unplugged and replugged for ubuntu to pick it up properly, or more likely, the kernel doesn't support the chipset.

I'll try replugging the dongle in when I get near the machine (I'm working on it form 100km away), but I still think the chipset isn't supported by the kernel, and /dev/ttyUSB0 won't get created.

Thanks for the tip though.

11:34 AM  
cezim said...

Maybe this help You:
Original sysdm.cpl rename to sysdm.dll,
my sysdm.cpl copy to /system32, try do in the same time: replase first sysdm.cpl in dllcache, next in system32 and servicepackfiles. I have the same problem whith USB IRDA in 2003 Windows Server. Maybe You resolve it? ;) Good look!

8:09 AM  

Post a Comment

<< Home