jack23912 / grub4dos-chenall

Automatically exported from code.google.com/p/grub4dos-chenall
0 stars 0 forks source link

usb --init issue with two USB drives connected #166

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
What steps will reproduce the problem?
1. Connect USB-HDD (130GB 1st ptn, 2TB capacity WD Passport) + USB-Flash drive 
(removable type) to EeePC904HA or Acer Aspire 7741.
2. Boot 0.4.6a 2014-01-17 from USB-HDD
3. menu.lst has usb --init as first command

What is the expected output? What do you see instead?
usb --init says found two devices, 0x80, 0x00

Then have problems accessing USB-HDD - e.g. ls /  gives error.

If remove USB FLash drive and then boot from USB-HDD there is no problem (on 
both systems).
If re-connect USB-Flash drive and boot from USB-HDD then problem returns.

What version of the product are you using? On what operating system?
0.4.6a 2014-01-17

Please provide any additional information below.

USB flash drive, when connected by itself is detected as 0x80.

Original issue reported on code.google.com by Steve6375 on 6 Feb 2014 at 4:43

GoogleCodeExporter commented 8 years ago
If I boot from USB-FLash + USB-Flash
usb --init shows  0x80, 0x82
Access is all OK.
Is problem to do with USB-HDD?

Original comment by Steve6375 on 6 Feb 2014 at 4:52

GoogleCodeExporter commented 8 years ago
The WD Passport USB HDD, when booted from by itself, displays

devices found 0x80, 0x00

This is same even if USB Flash drive is also connected.

The WD has two USB IDs. one is WD Passport mass storage, the other is WD SES 
Device.

Maybe the SES Device is causing USB enumeration to stop - poss. error/exit in 
USB driver?

Original comment by Steve6375 on 6 Feb 2014 at 7:46

GoogleCodeExporter commented 8 years ago
Maybe the SES Device is causing USB enumeration to stop - poss.
Do not understand the SES device.

Please try this.

Original comment by yaya2007_7777@126.com on 17 Feb 2014 at 4:15

GoogleCodeExporter commented 8 years ago
With USB_HDD+USB_Flash+Internal_HDD   grldr 0.4.6a 2014-02-17
usb --init

Found 8 usb devices: Dev num: 0x80; 0x0; 0x82; 0xff; 0x0; 0x0; 0x0; 0x0;

Find command shows
(hd0,0)
(hd1,0)
(hd2,0)

but
ls (hd2,0)/
Error 25: Disk read error

Original comment by Steve6375 on 17 Feb 2014 at 10:02

GoogleCodeExporter commented 8 years ago
Executed on the command line:
Read 0x8359   ;such as return 0x4e4
Cat --hex (md)0x4e4+2

Please upload screenshots

Original comment by yaya2007_7777@126.com on 18 Feb 2014 at 2:02

GoogleCodeExporter commented 8 years ago
Found 8 usb devices: Dev num: 0x82; 0xff; 0x0; 0x0; 0x0; 0x0; 0x82 0x83;
For hex dump see:
https://dl.dropboxusercontent.com/u/7841017/g4d_8359.zip
Only hd1,0 was accessible with ls
Boot HDD (hd0,0) and flash (hd2,0) gave Error 25: disk read error

Original comment by Steve6375 on 18 Feb 2014 at 2:43

GoogleCodeExporter commented 8 years ago
Please try this.
If that fails, please again upload screenshots.

Original comment by yaya2007_7777@126.com on 20 Feb 2014 at 6:31

GoogleCodeExporter commented 8 years ago
Found 8 usb devices: Dev num: 0x82; 0xff; 0x0; 0x0; 0x0; 0x0; 0x82; 0x83
ls (hd0,0)/    Error 25: Disk read error   - 2TB USB boot HDD
ls (hd1,0)/    (contents of internal hdd)
ls (hd2,0)/    (contents of USB flash drive)

https://dl.dropboxusercontent.com/u/7841017/grldr20_02_2014.zip

Better! hd2 is now accessible, but still not boot device 2TB USB HDD  hd0

Original comment by Steve6375 on 20 Feb 2014 at 9:42

GoogleCodeExporter commented 8 years ago
Please try this.

Original comment by yaya2007_7777@126.com on 21 Feb 2014 at 12:25

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
With WD Passport 2TB HDD + USB Flash
Found 5 USB devices. Device Num: 0x80; 0x82; 0xff; 0x0; 0x82
 ls (hd0,0)/  lists USB HDD files
 ls (hd1,0)/  lists internal HDD files
 ls (hd2,0)/  lists USB Flash files

With WD Passport 2TB HDD only
Found 1 USB devices. Device Num: 0x80;
 ls (hd0,0)/  lists USB HDD files
 ls (hd1,0)/  lists internal HDD files

Seems better as I can boot now to full g4d menu.

Original comment by Steve6375 on 21 Feb 2014 at 1:31

GoogleCodeExporter commented 8 years ago
Please test.

Original comment by yaya2007_7777@126.com on 23 Feb 2014 at 1:03

GoogleCodeExporter commented 8 years ago
With WD Passport 2TB HDD + USB Flash
Found 3 USB devices. Device Num: 0x82; 0x82; 0x80
 ls (hd0,0)/  lists USB HDD files
 ls (hd1,0)/  lists internal HDD files
 ls (hd2,0)/  lists USB Flash files

Seems better , but lists 0x82 twice and finds 3 devices?

With WD Passport 2TB HDD only
Found 1 USB devices. Device Num: 0x80;
 ls (hd0,0)/  lists USB HDD files
 ls (hd1,0)/  lists internal HDD files

P.S. I have also noticed that on a warm reboot, after usb --init it often bombs 
out to grub4dos shell and hangs on find command. But a clean power-off/power-on 
works OK. This has been noticed on all versions of 4.6a - it seems to need a 
'clean' boot. Maybe a problem with register initialisation and registers not 
being in expected state?

Original comment by Steve6375 on 23 Feb 2014 at 2:46

GoogleCodeExporter commented 8 years ago
If I change the USB ports around so the USB flash drive is in a different USB 
port, then I get
Found 2 USB devices. Device Num: 0x80; 0x82

Original comment by Steve6375 on 23 Feb 2014 at 10:23

GoogleCodeExporter commented 8 years ago
I have here a few computers, hot restart, perform usb - init, did not find the 
problem can not reproduce the error, could not locate.

Original comment by yaya2007_7777@126.com on 24 Feb 2014 at 7:53

GoogleCodeExporter commented 8 years ago
To repro:
Asus EeePC 904HA (USB 2.0 ports)
WD Passport 2TB USB 3.0 HDD
Add Easy2Boot v1.28 + grub4dos 0.4.6a
Edit /menu.lst and add  usb --init  command.

1. Switch on EeePC
2. Boot to USB drive -> E2B menu loads
3. Press F9 = reboot command
4. Boot to USB drive again -> error 

TEST 2 - add commandline entry after usb --init in \menu.lst
1. Switch on EeePC
2. Boot to USB drive - press ESC when in commandline -> E2B menu loads
3. Press F9 = reboot command
4. Boot to USB drive again and get to grub4dos shell
5. type ls (hd0,0)/ -> works
6. type ls (hd1,0)/  -> Error 16: Inconsistent filesystem structure

No problem if USB Flash drive used instead of WD Passport.

If use USB 3.0 ICY BOX HDD caddy + fitted Seagate ST980811 AS on Asus EeePC - 
Error 82. No USB device found.  This is on power on - i.e. usb --init does not 
detect any USB drive on power up.

Original comment by Steve6375 on 24 Feb 2014 at 9:05

GoogleCodeExporter commented 8 years ago
Can  send an ISO template?

Original comment by yaya2007_7777@126.com on 28 Feb 2014 at 9:01

GoogleCodeExporter commented 8 years ago
Please test.

Original comment by yaya2007_7777@126.com on 5 Mar 2014 at 8:18

GoogleCodeExporter commented 8 years ago
Seems much better! Only USB devices 0x80 and 0x82 found with WD Passport+USB 
FLash.
only 0x80 if just WD Passport.
Also, seems more stable after reboot (no crash/hangs).
Is there still some debug output (e.g. when booting ISOs)?
I will continue testing but so far all OK.

P.S. Error 80: Won't run under QEMU -> 'BIOS does not support use of INT1A PCI 
Installation check'. 
If run usb --init twice under VBox, it hangs on ... Scanning USB devices ...  
(OK on real system, even if no USB devices attached).

Is there any way to prevent the 10 second delay/retry or shorten it. usb 
--delay=1 does not seem to affect it?

Original comment by Steve6375 on 5 Mar 2014 at 9:19

GoogleCodeExporter commented 8 years ago
Sorry, no debugging information removed. 
usb driver can not run in a virtual machine. 
Press any key, you can end 10 seconds countdown.

Original comment by yaya2007_7777@126.com on 5 Mar 2014 at 11:31

GoogleCodeExporter commented 8 years ago
If INT1A PCI check fails - can the 10 second timeout be removed - there is no 
point in waiting. 

Is the 10 seconds just for use to see message. It seems very long?

A usb --test command would be useful which returns True if USB mass storage 
device found.  If run grub4dos from a CD with no USB devices or from an 
emulator/VM - we would then not run usb --init. If we run same from a USb drive 
we would want to run usb --init.

Or if usb --init returned a True/False value with no 10 second delay (and maybe 
a error value), we could then use || pause --wait=10 

The 10 second delay is not wanted in every case - if there is no usb drives 
then what use is the 10 second delay.

Original comment by Steve6375 on 5 Mar 2014 at 11:47

GoogleCodeExporter commented 8 years ago
New grldr also fixes 'bad' BIOSes with buggy USB support - see
http://reboot.pro/topic/17902-rufus-v130-has-been-released/page-6#entry182575

Original comment by Steve6375 on 5 Mar 2014 at 5:25

GoogleCodeExporter commented 8 years ago
Good News. 
Agreed to remove the 10-second delay.

Original comment by yaya2007_7777@126.com on 6 Mar 2014 at 3:00

GoogleCodeExporter commented 8 years ago

Original comment by yaya2007_7777@126.com on 7 Mar 2014 at 1:40

GoogleCodeExporter commented 8 years ago
Thanks.
usb --init still hangs when executed for a 2nd time under VBox.
Can this be fixed please as it is a real nuisance?

Also, on real system with one USB flash drive present (if --init repeated False 
is returned on 2nd time)
usb --init && echo %@retval% %?%     -> 0 0x996f   "1 Device found"
usb --init && echo %@retval% %?%     -> 1 0x996f   "1 Device found"

Would be nice if %?%=number of devices found.

A test to determine if the driver was already installed would be nice?

If the driver is installed and then a 2nd USB drive is inserted into a USB 
port, is a 2nd usb --init required or does it auto-detect?

Original comment by Steve6375 on 7 Mar 2014 at 9:53

GoogleCodeExporter commented 8 years ago
Emphasize again, you can not use in a virtual machine!

0x8350 (1 byte): the number of drives is loaded. 
0x8351: is the drive letter.

No 'plug and play' functionality. Primarily as a boot device. 
The all device is inserted, and then run the usb - init. 
In order to start successfully, it is recommended to insert a disk u. 

Original comment by yaya2007_7777@126.com on 7 Mar 2014 at 1:21

GoogleCodeExporter commented 8 years ago
I realize it won't detect flash drives on a VM, but to test grub4dos menu and 
run ISOs, etc, it is useful to boot a USB drive on VBox. The problem is that if 
the 
usb --init 
command is run twice on VBOX, then it hangs the VM on 2nd time. First time it 
detects no USB devices (as expected), 2nd time it hangs VM.

"0x8351: is the drive letter." --> What if 3 USB drives detected?

If not allowed to run usb --init twice, can it be prevented from running a 2nd 
time?

Test
1.Boot from 046a grub4dos flash drive
2. usb --init --> 1 Device found 0x80;
3. Insert 2nd USB flash drive
4. usb --init --> 3 USB devices found, 0x82; 0x83; 0x80;

ls (hd0,0) --> contents of USB boot drive
ld (hd1,0) --> contents of internal HDD
ls (hd2,0) --> contents of 2nd flash drive
ls (hd3,0) --> contents of 2nd flash drive   XXXXXXX

Original comment by Steve6375 on 7 Mar 2014 at 1:35

GoogleCodeExporter commented 8 years ago
In VBox can start a USB drive, but can not install usb boot process. 
Please latter case screenshots. md base address 0x8359.

From 0x8351, every byte represents a drive letter

Original comment by yaya2007_7777@126.com on 7 Mar 2014 at 2:01

GoogleCodeExporter commented 8 years ago
0x8351 --> 0x808382  - so drive numbers not letter?

Problem in VBOX is it hangs in VM on second  usb --init - this is a nuisance 
when testing menus, etc. :-(

Screenshots of "Test" case described above on EeePC at 
https://dl.dropboxusercontent.com/u/7841017/pic.zip

Original comment by Steve6375 on 7 Mar 2014 at 2:22

GoogleCodeExporter commented 8 years ago
https://dl.dropboxusercontent.com/u/7841017/mdx41_extraUSB_test_case.zip

This is dump of (md)0x41 = 0x8200 start address for TEST CASE as described 
above.

Original comment by Steve6375 on 7 Mar 2014 at 7:43

GoogleCodeExporter commented 8 years ago
EeePC used for testing.
It has one USB slot on left side and two USB slots on right side.

Just noticed that with 2 flash drives inserted at startup (LHS+RHS)
first usb --init command says:
3 devices found 0x82; 0x82; 0x80;

(two 0x82 devices)

using grldr  6th March 2014  281,839 bytes
This is using USB slot on left side of EeePC + slot on right side of PC

Also, on EeePC, if I use two slots on right side I get:
1 devices found 0x80   on startup with both connected)

So it depends on what USB ports I use.

Original comment by Steve6375 on 7 Mar 2014 at 7:57

GoogleCodeExporter commented 8 years ago
"So it depends on what USB ports I use" Completely correct.

0x8350 meaning:
00  Usb driver is not loaded from grldr
8x  Failed to load
0x  The number of successfully loaded

0x8351-0x8358 8 byte meaning: Each byte represents the drive letter

Original comment by yaya2007_7777@126.com on 7 Mar 2014 at 11:49

GoogleCodeExporter commented 8 years ago
No: cat --hex (md)0x8359+2
It should be: Use "read 0x8359" the return value.

Original comment by yaya2007_7777@126.com on 8 Mar 2014 at 12:00

GoogleCodeExporter commented 8 years ago
Just test, use usb - init 2 times:
Microsoft Virtual PC: OK
VMware Workstation: hangs

Original comment by yaya2007_7777@126.com on 8 Mar 2014 at 12:09

GoogleCodeExporter commented 8 years ago
>>Also, on EeePC, if I use two slots on right side I get:
>>1 devices found 0x80   on startup with both connected)

Just to be clear - two flash drives were connected but only one was detected if 
I use both left-hand side ports on EeePC.

Original comment by Steve6375 on 8 Mar 2014 at 12:12

GoogleCodeExporter commented 8 years ago
Here are dumps
read 0x8359  --> 0x4f6  , so I used cat --hex (md)0x4f6
Hope this is correct area??

I noticed results vary if
1. Leave off for 1 minute - boot to USB
2. Run usb --init - Switch off and on again quickly - run usb --init
3. Run usb --init - reboot - run usb --init

Case 1 works better - 2 flash drives detected
Case 2 is variable - sometime 1 detected sometimes 2
Case 3 often doesn't work, either 1 detected or none or maybe 0x82; 0x82; 0x80

Original comment by Steve6375 on 8 Mar 2014 at 2:27

Attachments: