macOS Universal Binary Viewer has the SLVoice plugin compiled for Intel chips only
tracked
Gwyneth Llewelyn
I'm a
very
recent user of an Apple Silicon (M1) MacBook Pro which I got as a gift from a friend. Fortunately, Linden Lab was so kind as to provide the SL Viewer with a Universal Binary version. Unfortunately, the
SLVoice
plugin that enables Vivox voice communications is compiled as an Intel-only application. Simply put, unless you happen to be in a WebRTC Voice simulator server, voice will not work
.Currently, I don't have Rosetta 2 installed (and don't intend to!), so, perhaps unlike the majority of Mac users with computers bought since ~2020 — who had no choice but to use Rosetta 2 to run the SL Viewer.
As such, once they installed the Universal Binary, even though the 'main' code was now being running directly, the SLVoice plugin was using the Intel emulator from Rosetta 2. People (as well as your own team!) just hadn't experienced any issue, so the SLPlugin's functionality was never checked for compatibility issues.
Note that currently Apple Silicon users have only two options, if they wish to continue to use voice services in SL:
- Install Rosetta 2.
- As an Estate Owner, file a ticket to request a move of the region servers to the so-called "Second Life Preflight" version of the simulator server, which supports WebRTC Voice.
Log In
Dan Linden
marked this post as
tracked
Dan Linden
Thank you for the report, Gwyneth!
I confirmed that the SLVoice binary on my Mac M1 is Intel only. Issue tracked at https://github.com/secondlife/viewer/issues/5119. We have no estimate when it may be implemented. Please see future updates here.
Gwyneth Llewelyn
Dan Linden I'm very glad to hear that! As said, if WebRTC Voice s just around the corner, it might not be worth the trouble, even if it probably isn't
much
trouble. WebRTC Voice, on the few regions I experimented, works flawlessly as expected.Dan Linden
Hi Gwyneth,
Vivox voice works on my M1 mac with that same 7.2.3.19375695301. Does it fail on all vivox regions or just one specifically?
Gwyneth Llewelyn
Dan Linden do you have Rosetta 2 installed? Then it will work!
Also, from the Terminal, try:
$ file /Applications/Second\ Life\ Viewer.app/Contents/MacOS/Second\ Life\ Release
/Applications/Second Life Viewer.app/Contents/MacOS/Second Life Release: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64]
/Applications/Second Life Viewer.app/Contents/MacOS/Second Life Release (for architecture x86_64): Mach-O 64-bit executable x86_64
/Applications/Second Life Viewer.app/Contents/MacOS/Second Life Release (for architecture arm64): Mach-O 64-bit executable arm64
Ok, the SL Viewer is clearly an universal binary — no problems here whatsoever!
Let's see what's with the
SLPlugin.app
(not entirely related, but just to show my point):$ file /Applications/Second\ Life\ Viewer.app/Contents/Resources/SLPlugin.app/Contents/MacOS/SLPlugin
/Applications/Second Life Viewer.app/Contents/Resources/SLPlugin.app/Contents/MacOS/SLPlugin: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64]
/Applications/Second Life Viewer.app/Contents/Resources/SLPlugin.app/Contents/MacOS/SLPlugin (for architecture x86_64): Mach-O 64-bit executable x86_64
/Applications/Second Life Viewer.app/Contents/Resources/SLPlugin.app/Contents/MacOS/SLPlugin (for architecture arm64): Mach-O 64-bit executable arm64
Zero problems here, either!
Now let's try the same with SLVoice:
$ file /Applications/Second\ Life\ Viewer.app/Contents/Resources/SLVoice
/Applications/Second Life Viewer.app/Contents/Resources/SLVoice: Mach-O 64-bit executable x86_64
Uh oh.
Clearly, SLVoice wasn't compiled as a universal binary!
And so, those of us who really do not want to install Rosetta 2 are out of luck. Allegedly, Rosetta 2, once installed, is
very hard
to fully and completely remove; as such, testing it will not be easy, unless you launch a VM or something like that with a pristine new version (of Tahoe, which is what I'm using)(Aye, I tested on several regions — especially on the Echo Voice Canyon, but not only there. I can repeat the test with whatever regions you like :) )
Gwyneth Llewelyn
Now, of course I'm aware that LL's internal compiling tools will be different from what is available as open source. But from the open source version on GitHub, the building configuration in
autobuild.xml
, you can see that SLVoice
is fetched from a remote repository, to which we residents naturally don't have any access; we can only download the executable, not the source code.You can download the publicly released executable here: <https://automated-builds-secondlife-com.s3.amazonaws.com/gh/secondlife/3p-slvoice/slvoice-4.10.0000.32327.5fc3fe7c.5942f08-darwin64-5942f08.tar.zst>
This can then be opened to reveal that the included version of
SLVoice
is dated Feb 5, 2024
. Clearly it hasn't seen a recent recompilation!So, whoever is responsible for
that
repository never recompiled SLVoice
as a universal binary — it was left at whatever last stable version you had (4.10.0000.32327.5fc3fe7c.5942f08 as of now), from (almost) two years ago.Can you at least confirm that on your Mac M1 the
SLVoice
binary you've got is Intel only?Because if not, well, then you guys are internally using a version that does not correspond to what the GitHub repository has — and which is the only one we can use, of course.
observeur Resident
I wouldn't hold my breathe on this Gwyneth. Webrtc will become the standard ... let's hope soon enough, when they decide it's been enough tested and fully validated. I might be wrong but it's not just a technical matter but also a cost matter. Vivox being a proprietary and paid solution, that LL intends to abandon eventually anyways. So, simply put, it's not worth it because we are on this transition toward using Webrtc only. Also Vivox via Rosetta works perfectly well, so it's your own choice to not installing it, but there isn't much reason to not doing so, really.
Gwyneth Llewelyn
observeur Resident oh, no, no, I have no illusions here! Also, I have no real pleasure in using Vivox at all, especially now they've been bought by Unity and have a slightly different and more arrogant attitude towards their users — and haven't realised that the world went on, leaving proprietary protocols behind.
I'm perfectly fine with WebRTC Voice and can't wait until it fully gets rolled out! Finally, mobile users will be able to talk (and listen!) to us again :) Also, WebRTC Voice may have some other possibilities (think: allowing conference calls with listeners logging in via a Web page, for those that don't want to install SL just to be in that conference...).
"Going back" and remaining stuck in the past — especially the proprietary and expensive past! — is definitely
not
what I
want!It just affects those like me who don't particularly want to install something on their Macs that is hard to uninstall, if 'something' goes wrong.
That said, with luck, all that needs to be done on the
SLVoice
external plugin is just click on a checkbox to compile it for the two architectures. Obviously, this means repackaging it, generating a new checksum, updating the buiiding file on the open source repository... but all of that should be fully automated these days. No, the only thing that might not be fully automated is giving the instruction to run the Darwin compiler to produce an universal binary instead of an Intel-only. The main viewer does not even need to be recompiled — or even touched — at all (it needs to be repackaged and re-signed, though). There is no testing to be done, not even in-house just to see if 'everything works'. It may
be the easiest release done by LL ever!Or...
Gwyneth Llewelyn
SLVoice
might
rely on an obscure library — provided, say, by Vivox themselves — which uses special features of the Intel chipset, and, therefore, cannot be compiled for the ARM architecture. That
would be a nightmare to fix (although I'm sure that Unity/Vivox releases universal binaries as well, since all their clients will need them... but who knows, there might be some interplay with the library providing the Polycom¨ Siren14TM
audio encoding). This is 2010 tech, long before Apple even dreamed of abandoning Intel (in fact, it's even possible that those ancient libraries are built with support for the PowerPC as well as Intel... aye, they're that
old!).In that case,
of course
I don't expect that this issue will be fixed
! It makes no sense to waste precious developer hours redoing ancient code that nobody has touched in almost two years now, if WebRTC is 'just around the corner' — it's far better to focus those developers on getting WebRTC stable and rolled out!The irony of all the above is that I got a new-ish (2nd hand) Mac because I needed something more powerful than my old 2014 PowerBook to be able to teach my RL college students about SL. I was soooo happy to be able to enjoy double-digit FPS for the first time since I started doing those classes, three years ago!! And then the students complained that they couldn't hear me... and I couldn't hear
them
... but we had zero problems using Discord!It took me some time to actually figure out what was wrong: the 'error log' only shows
SLVoice
being launched, and being quit immediately afterwards — but no errors and no hints on why
that happened. I was puzzled and stumped for quite a long time. It was just a sheer coincidence that I was having a similar (unrelated) issue on another application, which, however, said 'This application was compiled for a different architecture'. I downloaded the Apple Silicon version, and, while doing so, a thought crossed my mind — wait, the SL Viewer executable is a universal binary without the shadow of a doubt — but what about SLVoice
? And that's when I figured it out...Gwyneth Llewelyn
Since 99.9999% of all Mac users in SL have been enduring Rosetta 2 for five years now, they couldn't notice any difference:
SLVoice
clearly runs smoothly on top of Rosetta.It's just those, like me, who have no
need
of installing Rosetta to run 'legacy' applications (i.e., those that have been released before 2020...), that might be affected.In any case, at least for my students, I've requested a change of the whole estate to the 'experimental' WebRTC service on the 'Preflight' simulator channel — let's hope that they can do that.
If not, well, it means my students will have to rely on Discord to keep in touch with me!...