[GSoC 2026] Expanding the functionality of the Haiku Devices Application - Final Report | Haiku Project

Hello everyone! As Google Summer of Code 2026 comes to a close, it’s time to summarize the work I’ve done over the summer on expanding the functionality of the Haiku Devices application.


This is a companion discussion topic for the original entry at https://www.haiku-os.org/blog/aquamatic123/2026-08-21_gsoc_2026_expanding_the_functionality_of_the_haiku_devices_application_-_final_report/
32 Likes

Big thanks on your contributions! Hope you can stay around for some time to do some follow ups on the still open issues, work well done! :heart:

5 Likes

Awards, mate. Fine work.

:clinking_beer_mugs:

1 Like

Thank you! I will for sure! However, I am starting school tomorrow so development will obviously be slower.

5 Likes

Looks like very good and long awaited improvements!

Just the ability to disabled a packaged driver with a click is a big plus, being able to see the USB descriptors graphically also.

Congrats and thanks you for your contribution.

2 Likes

Ahoy @Aquamatic

Thank you for your improvements -

1))
Actually I saw the possibility of driver disabling, however it just showed warnings about “Disabling critical system drivers is not allowed.”
It should rather be
“Disabling critical system driver is not allowed.”
or
“Disabling critical system drivers are not allowed.”

However it is just minor syntax error.

I selected RAM disk Control Device to try out - this option.
What should I select to get button to be active ??

I thought it is safe to disable : am I wrong ?..

Or should I use a different type of view ?
I used ‘Connection’ view.

Do you know dmidecode utility ?
If you install that utility then you can get many details about the machine’s motherboard details, that not provided by the listusb or listdev commands - with its help you would have lesser unknown in categories, like ‘Computer’ itself.

a smaller part of dmidecode output

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
        Vendor: Dell Inc.
        Version: A13
        Release Date: 01/29/2015
        Address: 0xF0000
        Runtime Size: 64 kB
        ROM Size: 12 MB
        Characteristics:
                PCI is supported
                PNP is supported
                BIOS is upgradeable
                BIOS shadowing is allowed
                Boot from CD is supported
                Selectable boot is supported
                EDD is supported
                5.25"/1.2 MB floppy services are supported (int 13h)
                3.5"/720 kB floppy services are supported (int 13h)
                3.5"/2.88 MB floppy services are supported (int 13h)
                Print screen service is supported (int 5h)
                8042 keyboard services are supported (int 9h)
                Serial services are supported (int 14h)
                Printer services are supported (int 17h)
                ACPI is supported
                USB legacy is supported
                Smart battery is supported
                BIOS boot specification is supported
                Function key-initiated network boot is supported
                Targeted content distribution is supported
                UEFI is supported
        BIOS Revision: 4.6

Handle 0x0001, DMI type 1, 27 bytes
System Information
        Manufacturer: Dell Inc.
        Product Name: Precision M6800
        Version: 01
        Serial Number: CENSORED :D
        UUID: CENSORED :D
        Wake-up Type: Power Switch
        SKU Number: Precision M6800
        Family: Not Specified

Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
        Manufacturer: Dell Inc.
        Product Name: 0XWC1M
        Version:    
        Serial Number: CENSORED :D
        Asset Tag: Not Specified
        Features:
                Board is a hosting board
                Board is replaceable
        Location In Chassis: Not Specified
        Chassis Handle: 0x0003
        Type: Motherboard
        Contained Object Handles: 0

Handle 0x0003, DMI type 3, 22 bytes
Chassis Information
        Manufacturer: Dell Inc.
        Type: Laptop
        Lock: Not Present
        Version: Not Specified
        Serial Number: CENSORED :D
        Asset Tag: Not Specified
        Boot-up State: Safe
        Power Supply State: Safe
        Thermal State: Safe
        Security Status: None
        OEM Information: 0x00000000
        Height: Unspecified
        Number Of Power Cords: 1
        Contained Elements: 0
        SKU Number: To be filled by O.E.M.

Handle 0x0043, DMI type 4, 42 bytes
Processor Information
        Socket Designation: SOCKET 0
        Type: Central Processor
        Family: Core i7
        Manufacturer: Intel
        ID: C3 06 03 00 FF FB EB BF
        Signature: Type 0, Family 6, Model 60, Stepping 3
        Flags:
                FPU (Floating-point unit on-chip)
                VME (Virtual mode extension)
                DE (Debugging extension)
                PSE (Page size extension)
                TSC (Time stamp counter)
                MSR (Model specific registers)
                PAE (Physical address extension)
                MCE (Machine check exception)
                CX8 (CMPXCHG8 instruction supported)
                APIC (On-chip APIC hardware supported)
                SEP (Fast system call)
                MTRR (Memory type range registers)
                PGE (Page global enable)
                MCA (Machine check architecture)
                CMOV (Conditional move instruction supported)
                PAT (Page attribute table)
                PSE-36 (36-bit page size extension)
                CLFSH (CLFLUSH instruction supported)
                DS (Debug store)
                ACPI (ACPI supported)
                MMX (MMX technology supported)
                FXSR (FXSAVE and FXSTOR instructions supported)
                SSE (Streaming SIMD extensions)
                SSE2 (Streaming SIMD extensions 2)
                SS (Self-snoop)
                HTT (Multi-threading)
                TM (Thermal monitor supported)
                PBE (Pending break enabled)
        Version: Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz
        Voltage: 1.2 V
        External Clock: 100 MHz
        Max Speed: 2700 MHz
        Current Speed: 2700 MHz
        Status: Populated, Enabled
        Upgrade: Socket rPGA988B
        L1 Cache Handle: 0x0044
        L2 Cache Handle: 0x0045
        L3 Cache Handle: 0x0046
        Serial Number: Not Specified
        Asset Tag: Fill By OEM
        Part Number: Fill By OEM
        Core Count: 4
        Core Enabled: 4
        Thread Count: 8
        Characteristics:
                64-bit capable


Thanks you in advance for your answer in case driver disablement option.

:cowboy_hat_face:

1 Like

The disabling sentence is correct. Disabling of something is not allowed …This something can be plural or singular.

1 Like

however it just showed warnings about “Disabling critical system drivers is not allowed.”

I opened ticket 20265 for the issue of that button seemingly always being disabled.

1 Like

Thanks for your work on this!

1 Like

Nice work!

I also really like what you wrote about "Adapting to an Open Source Community" thanks for sharing that.
I hope you had a lot of fun!

1 Like

Nice job and well done ! :clap:

1 Like

Thanks for the review!

I do have some problems with the driver disabling feature. I made it way too strict to be able to disable a driver. I plan to update that list soon.

I did not know about dmidecode! I will have to look more into it if time permits and perhaps I could use some of its features.

I looked at the ticket and for the case of hda, at least on my end, when adding it as a device in a vm, its operates as a legacy device and unfortunately cannot really be blocked from the GUI without a big refactor.

as mentioned to KitsunePrefecture, I’ll be going over the list to make it more flexible.

I also just worked on getting driver used data a bit better. im doing a check on the children’s nodes and see if they have a driver. That reduces the amount of /busses/pci you would see and actually get the right driver used for the hardware. Hopefully my implementation is correct and gets accepted.

Thank you for the review as well!

2 Likes

Hope you had a nice GSoC experience, and thanks for your work @Aquamatic! :slight_smile:

2 Likes

One area of improvement (for another GSOC maybe), would be the ability to recognize the function driver used (eg network driver).

For instance, I have the below realtek dongle (a quite old one).

The USB driver is the first driver used because it’s a USB dongle for this wifi adapter and I can see it in the driver used below:

However it’s using in the end a network driver as I can see below in the network;
2026-09-1421-52

And the corresponding driver if I’m not wrong:

It would make the distinction between a recognized USB dongle (which is linked to a network driver) versus an unrecognized one — right now both just show the USB bus driver and look the same in Devices.

1 Like