I-Appliance BBS
The Official Source for Internet Appliance Upgrades and Mods
Amazon Honor System Click Here to Pay Learn More
BBS Main List | Sign In | Sign Up | Search | Help | Linux-Hacker.netReply to Thread | Printer |

Home / I-Opener Areas / I-Opener Technical Info Reference (MODERATED)
USB fix: fixes all USB transfer problems. Works in any OS. Easy.....
What else could you want? ;^)

New MessageUSB fix: fixes all USB transfer problems. Works in any OS. Easy..... (modified 0 times) Georgie
Profile
All right, the beta test was a success. Thus, here it comes......

Georgie

04-17-2002 21:11:01

New MessageNo discussion here, please. (modified 0 times) Georgie
Profile
Please, direct all your questions and discussion related to this USB fix to the "Technical Stuff" area, right here.

Thanks for your understanding. See you there,

Georgie

04-17-2002 22:37:23

New MessageUSB fix: a little history.... (modified 0 times) Georgie
Profile
Back to the USB fix.

History...

Yes, because this is my second shot at this problem. You can read about my first try here, actually reading that will help in the understanding of this here.

Very briefly: up until almost a year ago I had thought - as many other people - that the "USB problem" described by ckbone and others had not affected me at all. The USB problem basically means that all USB data transfers out if the IOpener are corrupted. Everything can go in without problems, but whatever comes out is corrupted.

So, a year ago I bought a USB CD-writer. And I learnt immediately that I had the USB problem, me too. All the CDs I wrote were corrupted. It was a very disappointing, frustrating experience...

Since Programmer was developing his "fixusb" in those days, I was waiting for the problem to be solved by others, mostly by Him. For a few months. But no real result came out of the fixusb project, thus I had to get down to the problem myself.

I began working on this problem last August ????????? . Once again, you can read all the details of my work here. Most importantly I established that this was a chipset timing problem by nature, and actually managed to come up with an almost perfect solution. This solution - which involved shortening the PCI latency of the USB controller by software - worked for my purposes almost perfectly. Almost means that I was able to write CDs quite well, getting one corrupted file on one CD out of about 10 CDs written. Not too bad, but unfortunately this solution was extremely sensitive to the speed of the PCI bus, thus could not easily be generalized. And it did not improve the transfer through USB NICs or many other USB devices. Just to give you another hint, my USB CF card reader/writer behaved totally different from my CD burner. There was one setting the CF reader required - having to do with PCI arbitration - , but then it didn't care about PCI frequency, USB PCI latency or hard drive timings or anything else, it worked without a hiccup.

So there I was, I could use my own USB peripherals quite well, but others were unable to make their USB NICs work without software error correction. And nobody ever even dared to think about investing into things like USB floppy or hard drives...

Then, about two months ago, I built a small home LAN. And again, I had the frustrating experience: my USB NIC was unable to transfer more than a few hundred KB without data corruption through my - otherwise OK working - USB port. I sort of expected it, but still didn't like it.

Thus I spent another Sunday afternoon with thinking about what the solution should be, and testing my ideas. And yes, I got it right this time....

Now, if you don't mind, without any further ado I am going to write about the fix itself.

A little bit later....

Georgie

04-17-2002 22:46:26

New MessageSoftware requirements: (modified 0 times) Georgie
Profile
Software reqirements:

1. - If you use Windows98/98SE/Me, you may need to update your uhcd.sys driver. It should be version 4.10.2223 (it's in %windir%\system32\drivers\ ). Please, download it from Microsoft, exactly from here.


2. - Please, in case you have any of the following software installed on your Windows machine, uninstall/disable them. All of the following:

- VIA USB filter driver
- VIA Performance driver (viapfd.sys)
- VIA Latency patch
- Programmer's fixusb.com
- my "old USB fix"


If all this is done, you are ready to apply the USB fix.

Here it comes.....

Georgie

04-17-2002 23:09:26

New MessageThe USB fix. (modified 0 times) Georgie
Profile
I have to brag a little here, but you might find it interesting: one of my last tests when developing this fix was the following: while writing 600MB of data onto a CD in my USB CD writer at 2x speed, I was simultaneously transferring the same 600MB data through my USB NIC to my other computer! Through the same USB controller!! All the 1.2GB checked out perfectly error-free. And not just once.... (Yes, the network protocol was NetBEUI, there was no built-in error correction. Combined speed was about 700Kb/s.) Quite impressing, isn't it?

----------------------------------------------------- bragging mode off .....


Now, the USB fix itself:

pci r75=a3 r40,7,2=2


Explanation:

The first part of the fix - put "a3" into register 75 of the Northbridge - cleans up the mess with PCI arbitration. It raises PCI bus timeout from 32CLKs to 96CLKs, thus the bus will be forced into master arbitration less frequently, meaning that PCI transfers will get interrupted much less frequently. This is a tiny little touch.

99% of the results is delivered by the second half of the fix. Put "2" into register 40 of the USB controller for ports 0-1 (if you have installed the second USB port, that one is also covered by this fix). It tells the USB controller to use 16DW bursts in stead of the default 8DW bursts. This is the answer to the problem. Soooooo simple.... (BTW, 8DW is the default setting on all other chipsets I've seen, so obviously, there is something special about the MVP4 chipset that breaks the USB port.... fortunately it can be cured! )

And that's all, Folks!

Prior to concluding, let me say thanks to Programmer and ckbone for all their work and the leads, and to laserfan for all the tiresome testing.

And now.....


Enjoy!


Georgie

04-18-2002 00:08:34

New MessageRE:USB fix: fixes all USB transfer problems. Works in any OS. Easy..... (modified 0 times) 02U2
Profile
Nice job Georgie!
I'll have to blow the dust off one of my i-Openers this weekend and try it! One of the reasons I shelved them was the Usb problem! Glad I didn't sell them.


Now if I could find one more GCT stand....

04-18-2002 03:17:03

New MessageRE:USB fix: fixes all USB transfer problems. Works in any OS. Easy..... (modified 0 times) Programmer
Profile
You're welcome.. and thanks to you for finally solving it.. (I never actually experienced the problem myself is why I quit messing with it) (though I did get better performance after my fixusb, which is why I worte it)
04-18-2002 13:08:34

New MessageImplementation.... (modified 0 times) Georgie
Profile
Guys,

I don't know how but one paragraph on the implemetation of the fix - which I did write originally, I swear - is completely missing. I am sorry.... :(

Here it is:

Implementation of the USB fix:

We are changing the values in two PCI registers. These two settings are needed for the USB port to work flawlessly. For it to be a non-crippled USB port.... ;)

The ideal implementation of this fix would be including it in the BIOS. It WILL happen soon, I am sure - Wild_Pencil, are you here? -. Nevertheless, any software capable of changing PCI registers can be used.

I am describing the fix using "pci.exe", a good old DOS software. You can read more about it in my post about the first version of this fix. Or you can download it from John Fine's web site. Pci.exe works in DOS or Win9X/ME.

Alternatively, you can use H. Oda's WPCREDIT and WPCRSET under any flavour of Windows, NT, 2K and XP included. Obviously you would have to create your own WPCRSET config file based on the description above.

Anyway, we should have it in the BIOS in no time. I will have time for this in a few weeks, if nobody else does it until then.

Sorry for the confusion.

O2U2, Programmer, thanks for the kind words.

Georgie

04-19-2002 07:07:41

New Message"VIA Peformance Driver" (modified 0 times) Georgie
Profile
Note:

Please, do make sure that you do not have the "VIA Performance Driver" installed on your system. It is actually part of the 4in1 driver set since version 4.35, if I am right. Any version released in 2002 contains, and silently installs it. If you have a file called "viapfd.sys" in your windows installation, you have it. It was developed to help RAID performance on VIA chipsets. It is supposed to improve sustained transfers on the PCI bus, but it causes problems on my machine.

Please, do not use it with my USB fix. If you have the file installed, delete it.

Thanks.

Georgie

04-19-2002 07:22:11

New MessageArrghh......... (modified 0 times) Georgie
Profile
Well........

Yes, you would put the command "pci r75=a3 r40,7,2=2" in your autoexec.bat. On a separate line.

Oh well, I was really very tired that night....

Georgie

04-19-2002 07:30:53

New MessageRE:USB fix: fixes all USB transfer problems. Works in any OS. Easy..... (modified 0 times) Ragnar1
Profile
By the way,
This fix easily merges with Georgies hard drive fix. Just add it to the end of your pci command. Haven't tried it with a usb device yet, but it caused no problem after adding it.
Ragnar
04-28-2002 18:51:58

New Message"How to" using PCI.exe: (modified 0 times) Georgie
Profile
Detailed implementation using pci.exe:

To avoid further confusion, here it is in one piece.

I described the implementation of this USB fix using "pci.exe". It is a DOS program, and as such only works under Win9x/ME. Thus under Win9x/ME, in order to have a properly working USB port you would make the following steps:

0. - Prior to doing anything, please, check the software requirements above, in my 4th post. One thing to add is that you should have no problems in setting up your USB hardware in Windows, it should show up in your device list without any warning signs. If this is the case, your device is operational, but you experience data corruption problems: this fix is for you.

1. - Download the program, pci.exe from its website.

2. - Extract "pci.exe" from the downloaded zip archive, and copy it into a directory in your path. If you do not understand what "path" means, just put it in your Windows directory.

3. - Edit "autoexec.bat" in your root directory. You can use Notepad for this.
Add the following line to it:

pci r75=a3 r40,7,2=2

4. - Restart your machine. Your data corruption issues should be solved now.


Good luck!

Georgie

PS: Yes, as Ragnar1 wrote, you can easily patch this USB fix to the end of the HDD speed fix, if you already use that one. You would just put "r75=a3 r40,7,2=2" to the end of that line.

05-06-2002 22:25:30

New MessageRE:USB fix: fixes all USB transfer problems. Works in any OS. Easy..... (modified 0 times) rscott
Profile
Just wondering if anyone has tried the fix in linux. I attempted to use pcitweak, but was (apparently) unsucessful. Pcitweak requires register offsets, so I just multiplied the registers above by four. When reading the registers, it only returned zeros, so I'm pretty sure my method is flawed

So, I'd like to give it another go - if someone could please either supply the register offsets in hex, or point me to the VIA datasheets (couldn't find them via google), that would get me to the next step.

Thanks!

05-17-2002 14:55:17

New MessageRE: pcitweak in linux (modified 0 times) Georgie
Profile
rscott,

Yes, your method sounds really flawed. If anything, why multiply by four?? ;)

Anyway, the given PCI register numbers - or offsets, call them as you like - and register values are all in hex, since pci.exe uses hex numbers, just as pcitweak. Just go ahead, and apply these values without multiplying them, and they will work.

In case you have troubles in the future, please, direct your questions to the discussion thread. Thanks.

Good luck

Georgie

05-17-2002 18:06:40

New MessageWPCR details (modified 0 times) nascarnights
Profile
I'm trying to translate the PCI.EXE command into something I can use with H. Oda's tools. (I'm a pci register newbie) I'm guessing that the northbridge is zero and it's left out of "pci r75=a3" cause it's implied? The USB interface is device 7, but what is the extra 2 in "r40,7,2=2" I still have usb problems with my SMC ethernet adapter even with XP, so I want to try these tools but I can't quite figure them out. Any help would be appreciated. thanks.
05-27-2002 21:25:47

New MessageRE:USB fix: fixes all USB transfer problems. Works in any OS. Easy..... (modified 0 times) ztw4
Profile
Just one little thing, not like it's much of a problem:

>PS: Yes, as Ragnar1 wrote, you can easily patch this USB fix to the
>end of the HDD speed fix...just put "r75=a3 r40,7,2=2" to the end of that line.

I use the HDD speed fix (which worked wonders) but found that the system would hang on boot if I simply appended the fix to the end of my PCI.EXE line in the Autoexec. Couldn't even guess why it does that.

If I put in an additional PCI.EXE line running just the USB fix, though, it appears to boot and operate just fine. Seemingly, a simple solution to a simple issue, but still I thought worth mentioning.

Wondering, though, has anyone else had this come up?

05-28-2002 09:47:11

New MessageRE:USB fix: fixes all USB transfer problems. Works in any OS. Easy..... (modified 0 times) Georgie
Profile
nascarnights, please see my answer in the Technical stuff area.

ztw4,

Thanks for letting us know about this issue. The first part of the fix (r75=a3) is the culprit. Pasting the two fixes together on one line had never caused problems for anyone - or at least not that I know of -, until you experienced it. I would attribute it to the unique combination of NB and SB chip revision, HDD, CPU, PCI speed and memory chip you have. But as you found, the solution is very simple, just put them on two separate lines. They do not directly interfere that way.

Georgie

06-07-2002 16:03:23

New MessageRE:USB fix: fixes all USB transfer problems. Works in any OS. Easy..... (modified 0 times) Jimmerman
Profile
NOTE: This does not apply to the VT82C586A/VT82C586B. On these chips the USB controller has a PCI device ID 0x3038 (0x30381106). The spec sheet from VIA clearly shows that register offset 40 (Misc. Control 1) bit 1 *is* DMA 8/16DW burst option. BUT it defaults to 16DW, and 16DW is a zero (0) in that register. Setting it to a one (1) sets 8DW burst mode. Perhaps Profile has different hardware, but I do not think one should set "r40,7,2=2". (Unless of course you want 8DW burst mode.)

VT82C586B Datasheet: http://www.viatech.com/pdf/productinfo/586b.pdf

Perhaps Profile could post his sources for this, and state what chipset (device ID) his IO has. Also, where did you find info on the VT8501 (host bridge), the datasheet for that is not publicly available.

07-23-2002 20:18:23

New MessageRE:USB fix: fixes all USB transfer problems. Works in any OS. Easy..... (modified 0 times) Jimmerman
Profile
s/Profile/Georgie/ in that last message.

Oh and using pciconf (similar to pcitweek) for FreeBSD (Linux?) on would say:

pciconf -w -b pci0:0:0 0x75 0xa3

pciconf -w -b pci0:7:2 0x40 0x02

07-23-2002 20:23:19

New MessageNaaaaahhh........ (modified 0 times) Georgie
Profile
Jimmerman,

Welcome to the board, you are obviously new here. The user ID of the message author is on the right hand side, not on the left. Nobody calls himself Profile here....

As for your comments everywhere, you should have been a bit more circumspect before posting them. You are dead wrong about what you say: we are talking about the VT82C686A Southbridge, not the VT82C586A/B chip, as you thought we were.

No problem, but next time don't think everybody else is stupid, it probably never is the case.

One positive note: thank you for letting us know about pciconf. I also have to let you know that since last week you can get a brand new BIOS version implementing this very USB fix, apparently with success. In case you actually need it, you can find it referenced in the Technical Stuff area.

Take care,

Georgie

07-24-2002 22:49:16

Reply to Thread | Printer |
All times are PSTPowered by UltraBoard v1.62



Copyright © 2000, Netmake Inc. All Rights Reserved.
See Terms and Conditions for more information.




i-opener opener laptop notebook computer help drivers dll free windows dos repair fix linux mac macintosh 2000 95 98 nt pc configure hardware software sound video netscape explorer network networking lan wan software cmos fat bios printer card mouse modem ide scsi cd rom controllers scanner tape hard drive cgi scripts source code mp3