The USB specification states that, for the Control Pipe, a low-speed device must have a MPS of 8, a full-speed device can have a MPS of 8, 16, 32, or 64, while a high-speed device must have a MPS of 64.
There is no settings to change that, and there shouldn't be.
If you declare the MSD as full speed, Bochs currently sets the Control Pipe MPS to 64. You can change this in the source code to either 8, 16, 32, or 64. If you do, remember to change the Device Descriptor and the d.endpoint_info[0] information as well.
Code: Select all
0x40, /* u8 bMaxPacketSize; 64 Bytes */
...
d.endpoint_info[USB_CONTROL_EP].max_packet_size = 64; // Control ep0
Also, Bochs absolutely does allow you to change the speed of the device.
Code: Select all
usb_uhci: port2=disk, options2="speed:full, path:../common/hdd.img"
Here is the bochsrc.txt file I use to run your latest image:
Code: Select all
config_interface: win32config
romimage: file=C:/bochs/bochs/bios/BIOS-bochs-latest
cpu: model=broadwell_ult
cpu: count=1, ips=50000000, reset_on_triple_fault=1, ignore_bad_msrs=1
cpu: cpuid_limit_winnt=0
clock: sync=none, time0=local
memory: guest=512, host=512
vgaromimage: file=C:/bochs/bochs/bios/VGABIOS-lgpl-latest
vga: extension=vbe, update_freq=5, realtime=1, ddc=builtin
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15
ata2: enabled=0, ioaddr1=0x1e8, ioaddr2=0x3e0, irq=11
ata3: enabled=0, ioaddr1=0x168, ioaddr2=0x360, irq=9
ata0-master: type=disk, path="BonsOS_serial_1.img", model="BonsOS_serial_1.img", sect_size=512
boot: disk
floppy_bootsig_check: disabled=0
log: log.txt
panic: action=ask
error: action=report
info: action=report
debug: action=ignore
mouse: enabled=0, type=imps2
private_colormap: enabled=0
pci: enabled=1, chipset=i440fx
magic_break: enabled=1
usb_uhci: enabled=1
usb_uhci: port2=disk, options2="speed:full, path:../common/hdd.img, debug"
Code: Select all
src/interrupts/exceptions.c:84 #DE: Divide by zero exception
System halted.