utmapp / UTM

Virtual machines for iOS and macOS
https://getutm.app
Apache License 2.0
26.46k stars 1.33k forks source link

Quadra 800 Emulation Dies with 'RAMBlock "macfb-vram" already registered, abort!' #3241

Open ajacocks opened 2 years ago

ajacocks commented 2 years ago

Describe the issue When launching an m68k virtual machine, configured as "Macintosh Quadra 800 (q800)", the VM immediately terminates with 'RAMBlock "macfb-vram" already registered, abort!' I am using a 1MB ROM from my Quadra, added to the package contents of UTM, under 'contents/resources/qemu', as 'MacROM.bin'.

Configuration

Crash log QEMULauncher_2021-11-02-084401_odysseus.crash.zip

Debug log debug.log

Upload VM config copy.plist.zip

daemonspudguy commented 2 years ago

I'm having the same issue.

MonsterReporter commented 2 years ago

I believe it has something to do with emulated display cards. I've tried all of the available ones but none work. I think that there is an issue with the emulated display card "nubs-macfb". UTM hasn't figured out how to make this display card work yet

adespoton commented 2 years ago

Have you got this working with vanilla qemu-system-m68k? If so, what parameters are you passing?

Custom builds of qemu-system-m68k are also now available via https://www.emaculation.com/forum/viewforum.php?f=37 that will boot A/UX and Mac OS 7.1-8.1, but these haven't made it into mainline qemu-system-m68k yet.

ajacocks commented 2 years ago

I have indeed gotten it working with vanilla qemu. I just followed the docs from the wiki: https://wiki.qemu.org/Documentation/Platforms/m68k

As a side note, the emulation goes a bit further, in UTM 3.0.4, when I manually specify the path to the Quadra 800 ROM. It now dies trying to add USB to the Q800. Is there a way to disable that without editing the entire qemu launch string?

adespoton commented 2 years ago

Ah; then you're now up against the same blocker I see when running QEMU-PPC-CUDA guests where there's not expected to be any USB integration, and running Big Sur on QEMU-x86_64. All three appear to be presenting a different interface to SPICE than they are to the user -- because the emulator itself doesn't know what to do with the USB bridge SPICE sets up.

I haven't found a way to override this yet, but am looking forward to when we can do so.

Have you tried using the "legacy input" switch? The comments say that it switches from USB to PS/2, but it's possible it will provide the correct interface (or at least a usable one) for QEMU-M68k's Q800 emulation.

ajacocks commented 2 years ago

Yep, I used the “legacy input” switch, and it seem to do the trick.

On Tue, Feb 1, 2022 at 4:10 PM Em Adespoton @.***> wrote:

Ah; then you're now up against the same blocker I see when running QEMU-PPC-CUDA guests where there's not expected to be any USB integration, and running Big Sur on QEMU-x86_64. All three appear to be presenting a different interface to SPICE than they are to the user -- because the emulator itself doesn't know what to do with the USB bridge SPICE sets up.

I haven't found a way to override this yet, but am looking forward to when we can do so.

Have you tried using the "legacy input" switch? The comments say that it switches from USB to PS/2, but it's possible it will provide the correct interface (or at least a usable one) for QEMU-M68k's Q800 emulation.

— Reply to this email directly, view it on GitHub https://github.com/utmapp/UTM/issues/3241#issuecomment-1027290843, or unsubscribe https://github.com/notifications/unsubscribe-auth/AFLVO4WF4KG5NF5QS7RE4XLUZBD5BANCNFSM5HGMIWQQ . You are receiving this because you authored the thread.Message ID: @.***>

--

Alexander Jacocks, RHCE | Principal Solutions Architect (e) @.*** | Public Sector Business Development (c) (240) 447-5974 | Tyson's Corner, VA (g) CC28 8136 C253 907A B9BB 9EEA D3C8 1A3A 790A 0AB9

adespoton commented 2 years ago

So in UTM, is it still dying at the "already registered" bit, or is it progressing now that there's no rogue USB bus messing things up?

adespoton commented 2 years ago

Decided to set things up for myself, and am getting stuck at the USB bridge not compatible bit even when I have Legacy enabled. Using 3.0.4b.

adespoton commented 6 months ago

Now trying with 4.5.0b and getting a lot further: Device: Q800 Memory: 128MB Drives: Image Type: BIOS, Name: MacROM.bin (keep it in the config instead of in UTM; seems to work) Image Type: Disk Image, Interface: MTD, Name: pram.img (we need to set up the PRAM file) Image Type: Disk Image, Interface: SCSI, Name: 2GB.qcow2 Image Type: CD/DVD, Interface: SCSI, Path:

Unfortunately, this throws the error:

QEMU error: QEMU exited from an error: qemu-m68k-softmmu: -device lsi53c895a,id=scsi0: 'lsi53c895a' is not a valid device model name

What works with vanilla QEMU is:

–device scsi-hd,scsi-id=0,drive=hd0 –drive file=MacOS8.0.img,media=disk,if=none,id=hd0

–device scsi-cd,scsi-id=3,drive=cd0 –drive file=MacOS8.0.iso,media=cdrom,if=none,id=cd0

What gets autogenerated by UTM is:

-device lsi53c895a,id=scsi0 -device scsi-hd,bus=scsi0.0,channel=0,scsi-id=0,drive=drive2237AD1A-3D8E-4698-B5C0-4CDBBAC48210,bootindex=0 -drive "if=none,media=disk,id=drive2237AD1A-3D8E-4698-B5C0-4CDBBAC48210,file=,discard=unmap,detect-zeroes=unmap" -device scsi-cd,bus=scsi0.0,channel=0,scsi-id=1,drive=drive2760219D-750B-477F-A0AE-0CBD1E79FBCB,bootindex=1 -drive "if=none,media=cdrom,id=drive2760219D-750B-477F-A0AE-0CBD1E79FBCB,file=,readonly=on"

adespoton commented 6 months ago

Hmm; getting the same error with a NeXTcube running NeXTSTEP 2.2. I need some way to override the SCSI controller device name.

adespoton commented 6 months ago

Ah; brain addled. Querying UTM 4.5.0b, it is, of course, using qemu-system-m68k version 7.0.2 since we had to roll back from 8.x due to the incompatibilities with qemu-system-ppc and x86_64.

Full support for Quadra 800 and NeXTcube came in QEMU 8.2.