Bochs Emulator (USB Edition)

Bochs is a highly portable open-source IA-32 (x86) PC emulator written in C++, that runs on most popular platforms. It includes emulation of the Intel x86 CPU, common I/O devices, and a custom BIOS. Bochs can be compiled to emulate many different x86 CPUs, from early 386 to the most recent x86-64 Intel and AMD processors which may even not reached the market yet.

Bochs is capable of running most Operating Systems inside the emulation including Linux, DOS, or Microsoft Windows. Bochs was originally written by Kevin Lawton and is currently maintained by people like you.

Bochs can be compiled and used in a variety of modes, some which are still in development. The 'typical' use of bochs is to provide complete x86 PC emulation, including the x86 processor, hardware devices, and memory. This allows you to run OS's and software within the emulator on your workstation, much like you have a machine inside of a machine. For instance, let's say your workstation is a Unix/X11 workstation, but you want to run Win'95 applications. Bochs will allow you to run Win 95 and associated software on your Unix/X11 workstation, displaying a window on your workstation, simulating a monitor on a PC.

The Official Bochs website can be found at https://bochs.sourceforge.io/

Bochs -- USB Edition

This page and all source code, documentation, and downloads mentioned here, is my Fork(ref) of the Official Bochs project.

My intent is to integrate enough function into the Bochs project to allow a user to research, develop, and debug their USB drivers. It includes support for the four major host controllers; UHCI, OHCI, EHCI, and xHCI, as well as USB devices such as a mouse, keyboard, thumb drive, floppy drive, or external hub.

My goal is to make it an elaborate form of USB driver debugging via emulation. You provide the bootable hard drive, and this edition of Bochs will allow you to monitor, test, and log USB function.

News

2023-12-10 - The 'usb_debug' branch on the Bochs-USB-Edition github has now been updated with the new USB Debug files. These updates support the debugger on the xHCI and UHCI controllers. They are experimental, but I have put them through a few tests and all came out okay. The executables have not been updated yet, since the inclusion into the Bochs main source is imminent. Once this is included in the Bochs main tree, where others can test it as well, and testing is promising, I will update the executables. The Documentation has been updated, see section 5.8.

2023-10-23 - The 'usb_debug' branch on the Bochs-USB-Edition github was inconsistent with the master branch so it needed to be updated. It has been indirectly expressed to me that the branch would not be merged into the main Bochs tree until the USB Debugger was complete. Well, that is going to be some time since there is still a lot of work that needs to be done. Since I don't wish to maintain a branch that won't be merged for some time, I am not going to have the branch available on the github site. However, as I continue to work on the USB Debugger, feel free to contact me at fys [at] fysnet [dot] net if you wish to receive a copy. I will be more than happy to send you the current code. I will try to keep the binaries and Documentation up to date.

2023-09-18 - The 'usb_debug' branch on the Bochs-USB-Edition github is now up to date with my current work, and will have periodical updates to add more features.

2023-09-02 - Regression state.
Per request and as to commit small pull requests, I have regressed this fork back to the current Bochs state and will add small pull requests to bring the USB part of Bochs current to my additions.

2023-05-31 - Summer release (first experimental release).

2023-04-17 - Official start of this Fork.

Overview

To be clear, it is not my intent to take over the Bochs project, but to merely add extensive USB function, debugging, and logging to the existing Bochs project, through Pull Requests.

If you would like to integrate my current USB source into your Bochs Project, you can visit my fork's source tree at https://github.com/fysnet/Bochs-USB-Edition.

If you do not have the capabilities to build the project, I have Windows versions of the executables in my Downloads section. (See the 'Notes' section below)

My copy of the User Documentation is compiled from the Official Bochs User.dbk file, with additional sections to document the additional function of this project.

If you have any questions or comments, please contact me at: fys [at] fysnet [dot] net.

Notes

My build platform and my target platform are both for Windows 10. I do not have a Linux or *unix environment and will not have binaries for Linux. However, I will try to keep the source portable so that it can be built for a Linux environment with little to no modifications. If you build my source for a Linux environment, and wish to share the binary, please let me know.

Please note that this fork may and usually will be ahead of the main Bochs project. When I have sufficient progress and thoroughly tested code, I will create a pull request. Until then, you may download the source from this fork.

My build may or may not be current with future patches/enhancements of other parts of the Official Bochs source. I will try to keep up with the Official Bochs source tree, but please note that it may fall behind, since my interest and purpose is the USB emulation. The other emulation is on the back burner for this project.