Watching Spotify and listening to Netflix in 2023

P.S.: With the latest fix shkhln linked, it now also works under Wayland with XDG_RUNTIME_DIR setup correctly as the handbook says:
Code:
setenv XDG_RUNTIME_DIR /var/run/user/`id -u`
 
As a few people already noticed, www/chromium has been recently patched to enable Widevine support. (It's debatable whether that's a good or bad thing, but the demand is certainly there.)

This is done with the help of www/foreign-cdm, which is a relatively straightforward proxy for the Content Decryption Module API. The port provides a native FreeBSD CDM implementation (a shared library) that in background transparently launches one or more Linux processes loading Widevine. They communicate through a pair of Unix sockets.

Widevine itself is available through www/linux-widevine-cdm.

So, what does that actually mean? Enabling DRM playback should now be as easy as (assuming the latest repo):
Code:
% sudo pkg install chromium # 117.0.5938.149_2 or higher

% sudo pkg install foreign-cdm
% sudo sysrc linux_enable="YES"
% sudo service linux start

% git clone --depth 1 https://github.com/freebsd/freebsd-ports
% cd freebsd-ports/www/linux-widevine-cdm
% make
% sudo make install

Use the demo at https://bitmovin.com/demos/drm or https://reference.dashif.org/dash.js/latest/samples/drm/widevine.html to test the playback. (This might require a few attempts + browser restart.)

There are, of course, some limitations:
  1. we are permanently restricted to the Widevine L3 protection level, just like Linux;
  2. there is no sandboxing yet;
  3. I'll eventually get to disabling debug logging as well as fixing a few minor memory leaks, but for the time being they remain there for everyone to enjoy.
Following these instructions won't allow you to watch Netflix or Disney+ on 15-CURRENT. Doing this, however, allowed me to watch Netflix/Disney+ videos in chromium on 15-CURRENT after kldloading linux64, installing chromium, foreign-cdm, and linux-widevine-cdm: "mount -t fdescfs fdescfs /dev/fd". Before I mounted fdescfs at /dev/fd, Netflix/Disney+ videos didn't start in chromium, so this step was crucial for me. Note that I didn't have to type "service linux onestart". Mounting anything at /compat/linux subdirectories didn't allow me to watch widevine videos, but mounting fdescfs at /dev/fd allowed me to do it, and I could unmount everything that was mounted at /compat/linux subdirectories and continue watching widevine videos.
 
Following these instructions won't allow
No, those are the correct instructions, it's your computer that is wrong™. You are likely misinterpreting something. There were 2 bugs fixed recently, one fix is not yet in the ports even.
 
You might be right... But as I said, mounting fdescfs at /dev/fd was the necessary step for me and it finally allowed me to watch widevine videos. In my loader.conf, I have "linux64_load=YES" and in my fstab file, I have "fdescfs /dev/fd fdescfs rw 0 0". I have no need for "linux_enable=YES" in rc.conf because I don't need to mount anything at /compat/linux subdirectories.
 
Hi, I'm using the "latest" packages version under freebsd 14.0 amd64.
I have to use and lock the foreign-cdm-3 version otherwise the other versions don't work when I use Netflix.

Versions that don't work:
foreign-cdm-20231203
foreign-cdm-20231217_3

Is there anything more to do with the new versions ?
 
I did a pkg upgrade on foreign-cdm-3 and upgraded to foreign-cdm-20231217_3 and now no errors.
Everything works again. I didn't understand what happened when I got the error on Netflix...
Thank you for writing this program.
 
I have a strange issue which started today:
Spotify can only play ~20% of the songs, the majority is skipped with a message "cannot be played at the moment".
I reinstalled everything required and rebooted, but still the same behavior.
Any ideas?
 
I have a strange issue which started today:
Spotify can only play ~20% of the songs, the majority is skipped with a message "cannot be played at the moment".
I reinstalled everything required and rebooted, but still the same behavior.
Any ideas?

Hi Mate, i also noticed widevine has stopped working
doesnt work at all with channel 4 or it in the uk sice yesterday
 
I don't know for Spotify, but drm widevine in google-chrome-stable_116.0.5845.179-1 is too old for Netflix;
edit Makefile:
CHROME_VERSION= 121.0.6167.85-1
edit distinfo:
SHA256 (google-chrome-stable_121.0.6167.85-1_amd64.deb) = f6f3d002264fc3ad2820b9b41dee08cfd94e73e5afb4708113d0870357a373bb
SIZE (google-chrome-stable_121.0.6167.85-1_amd64.deb) = 106421968
rebuild and reinstall linux-widevine-cdm.
 
I have a strange issue which started today:
Spotify can only play ~20% of the songs, the majority is skipped with a message "cannot be played at the moment".
I reinstalled everything required and rebooted, but still the same behavior.
Any ideas?
I haven't bothered with the widevine install, I'm not a great fan of Spotify's player anyway. I've been using audio/ncspot instead. As long as the encoding is installed correctly, works fine for me.
 
Aaaand...
The error is back, only 20% of the Spotify songs are playable. That only some of the songs are playable seems very strange to me. I'd expect all or nothing...
 
Here is what Chromium writes to the console on errors:
chrome --enable-features=UseOzonePlatform --ozone-platform=wayland &
[1] 3753
elgrande@elfreebsdo1:~ % [3753:-31374592:0126/113434.814646:ERROR:bus.cc(407)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3753:-31374592:0126/113434.814670:ERROR:bus.cc(407)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3753:-31374592:0126/113434.814676:ERROR:bus.cc(407)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3753:-31374592:0126/113434.814681:ERROR:bus.cc(407)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3753:-31383552:0126/113434.819925:ERROR:policy_logger.cc(156)] :components/enterprise/browser/controller/chrome_browser_cloud_management_controller.cc(161) Cloud management controller initialization aborted as CBCM is not enabled. Please use the `--enable-chrome-browser-cloud-management` command line flag to enable it if you are not using the official Google Chrome build.
[3753:-31374592:0126/113434.830043:ERROR:bus.cc(407)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3753:-31374592:0126/113434.830079:ERROR:bus.cc(407)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3759:1380012288:0126/113435.179357:ERROR:command_buffer_proxy_impl.cc(127)] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
[3753:-31372800:0126/113439.174112:ERROR:registration_request.cc(305)] Registration HTTP response code not OK: 404
[3753:-31372800:0126/113504.477983:ERROR:registration_request.cc(305)] Registration HTTP response code not OK: 404
lib.cpp:620: info: GetCdmVersion
lib.cpp:562: info: started process; pid = 3891
fcdm-jail: spawned jail 7
worker.cpp:800: info: started
worker.cpp:827: info: exiting...
lib.cpp:649: info: version = 4.10.2662.3
lib.cpp:575: info: CreateCdmInstance; cdm_interface_version = 10; key_system = com.widevine.alpha; key_system_size = 18; reinterpret_cast<void*>(get_cdm_host_func) = 3caead1dd920; user_data = 5a3066e40600
lib.cpp:562: info: started process; pid = 3893
fcdm-jail: spawned jail 8
worker.cpp:800: info: started
worker.cpp:723: info: createCdmInstance; cdm_interface_version = 10; key_system = com.widevine.alpha
worker.cpp:727: info: cdm version; get_cdm_ver_func() = 4.10.2662.3
worker.cpp:705: info: get_cdm_host; host_interface_version = 10; user_data = 92b2f0
worker.cpp:759: info: exiting createCdmInstance
lib.cpp:58: info: Initialize; allow_distinctive_identifier = false; allow_persistent_state = false; use_hw_secure_codecs = false
worker.cpp:215: info: initialize
worker.cpp:659: info: QueryOutputProtectionStatus
lib.cpp:483: info: queryOutputProtectionStatus
lib.cpp:485: info: exiting queryOutputProtectionStatus
worker.cpp:662: info: exiting QueryOutputProtectionStatus
worker.cpp:564: info: OnInitialized; success = true
lib.cpp:391: info: onInitialized
lib.cpp:394: info: exiting onInitialized
worker.cpp:568: info: exiting OnInitialized
worker.cpp:222: info: exiting initialize
lib.cpp:64: info: exiting Initialize
lib.cpp:256: info: OnQueryOutputProtectionStatus; result = 0; link_mask = 0; output_protection_mask = 0
worker.cpp:422: info: onQueryOutputProtectionStatus
worker.cpp:429: info: exiting onQueryOutputProtectionStatus
lib.cpp:262: info: exiting OnQueryOutputProtectionStatus
lib.cpp:575: info: CreateCdmInstance; cdm_interface_version = 10; key_system = com.widevine.alpha; key_system_size = 18; reinterpret_cast<void*>(get_cdm_host_func) = 3caead1dd920; user_data = 5a3066e40480
lib.cpp:562: info: started process; pid = 3895
fcdm-jail: assuming /var/run/user/1001/.fcdm-jail is already mounted [pid = 3895]
fcdm-jail: spawned jail 9
worker.cpp:800: info: started
worker.cpp:723: info: createCdmInstance; cdm_interface_version = 10; key_system = com.widevine.alpha
worker.cpp:727: info: cdm version; get_cdm_ver_func() = 4.10.2662.3
worker.cpp:705: info: get_cdm_host; host_interface_version = 10; user_data = 92b2f0
worker.cpp:759: info: exiting createCdmInstance
lib.cpp:58: info: Initialize; allow_distinctive_identifier = false; allow_persistent_state = false; use_hw_secure_codecs = false
worker.cpp:215: info: initialize
worker.cpp:659: info: QueryOutputProtectionStatus
lib.cpp:483: info: queryOutputProtectionStatus
lib.cpp:485: info: exiting queryOutputProtectionStatus
worker.cpp:662: info: exiting QueryOutputProtectionStatus
worker.cpp:564: info: OnInitialized; success = true
lib.cpp:391: info: onInitialized
lib.cpp:394: info: exiting onInitialized
worker.cpp:568: info: exiting OnInitialized
worker.cpp:222: info: exiting initialize
lib.cpp:64: info: exiting Initialize
lib.cpp:256: info: OnQueryOutputProtectionStatus; result = 0; link_mask = 0; output_protection_mask = 0
worker.cpp:422: info: onQueryOutputProtectionStatus
worker.cpp:429: info: exiting onQueryOutputProtectionStatus
lib.cpp:262: info: exiting OnQueryOutputProtectionStatus
lib.cpp:77: info: SetServerCertificate; promise_id = 3; server_certificate_data = 5a306547f600; server_certificate_data_size = 702
worker.cpp:242: info: setServerCertificate
worker.cpp:590: info: OnResolvePromise; promise_id = 3
lib.cpp:417: info: onResolvePromise
lib.cpp:420: info: exiting onResolvePromise
worker.cpp:594: info: exiting OnResolvePromise
worker.cpp:248: info: exiting setServerCertificate
lib.cpp:82: info: exiting SetServerCertificate
lib.cpp:87: info: CreateSessionAndGenerateRequest; promise_id = 4; session_type = 0; init_data_type = 0; init_data = 5a3066e0a900; init_data_size = 83
worker.cpp:254: info: createSessionAndGenerateRequest
worker.cpp:581: info: OnResolveNewSessionPromise; promise_id = 4; session_id = 33DECA18276BC8081E44F61ACAFB69E1; session_id_size = 32
lib.cpp:408: info: onResolveNewSessionPromise
lib.cpp:412: info: exiting onResolveNewSessionPromise
worker.cpp:586: info: exiting OnResolveNewSessionPromise
worker.cpp:609: info: OnSessionMessage; session_id = 33DECA18276BC8081E44F61ACAFB69E1; session_id_size = 32; message_type = 0; message =




ER���i|d�{M�"0; message_size = 1708
lib.cpp:436: info: onSessionMessage
lib.cpp:441: info: exiting onSessionMessage
worker.cpp:615: info: exiting OnSessionMessage
worker.cpp:262: info: exiting createSessionAndGenerateRequest
lib.cpp:94: info: exiting CreateSessionAndGenerateRequest
lib.cpp:112: info: CloseSession; promise_id = 5; session_id = 33DECA18276BC8081E44F61ACAFB69E1; session_id_size = 32
worker.cpp:281: info: closeSession
worker.cpp:643: info: OnSessionClosed; session_id = 33DECA18276BC8081E44F61ACAFB69E1; session_id_size = 32
lib.cpp:475: info: onSessionClosed
lib.cpp:478: info: exiting onSessionClosed
worker.cpp:647: info: exiting OnSessionClosed
worker.cpp:590: info: OnResolvePromise; promise_id = 5
lib.cpp:417: info: onResolvePromise
lib.cpp:420: info: exiting onResolvePromise
worker.cpp:594: info: exiting OnResolvePromise
worker.cpp:287: info: exiting closeSession
lib.cpp:117: info: exiting CloseSession
lib.cpp:275: info: Destroy
lib.cpp:87: info: CreateSessionAndGenerateRequest; promise_id = 6; session_type = 0; init_data_type = 0; init_data = 5a3065431180; init_data_size = 83
worker.cpp:254: info: createSessionAndGenerateRequest
[3753:-31374592:0126/113511.349296:ERROR:bus.cc(407)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3753:-31374592:0126/113511.349335:ERROR:bus.cc(407)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3753:-31374592:0126/113511.349347:ERROR:bus.cc(407)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3753:-31374592:0126/113511.349357:ERROR:bus.cc(407)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3753:-31374592:0126/113511.349372:ERROR:bus.cc(407)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3753:-31374592:0126/113511.349384:ERROR:bus.cc(407)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3753:-31374592:0126/113511.349398:ERROR:bus.cc(407)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3753:-31374592:0126/113511.349409:ERROR:bus.cc(407)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3753:-31374592:0126/113511.349418:ERROR:bus.cc(407)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3753:-31374592:0126/113511.349445:ERROR:bus.cc(407)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3753:-31374592:0126/113511.349457:ERROR:bus.cc(407)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3753:-31374592:0126/113511.349467:ERROR:bus.cc(407)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3753:-31374592:0126/113511.349478:ERROR:bus.cc(407)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3753:-31374592:0126/113511.349488:ERROR:bus.cc(407)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
worker.cpp:581: info: OnResolveNewSessionPromise; promise_id = 6; session_id = FB946F5DF993F46889F1436AF3ED823C; session_id_size = 32
lib.cpp:408: info: onResolveNewSessionPromise
lib.cpp:412: info: exiting onResolveNewSessionPromise
worker.cpp:586: info: exiting OnResolveNewSessionPromise
worker.cpp:609: info: OnSessionMessage; session_id = FB946F5DF993F46889F1436AF3ED823C; session_id_size = 32; message_type = 0; message =




ER���i|d�{M�"0; message_size = 1708
lib.cpp:436: info: onSessionMessage
lib.cpp:441: info: exiting onSessionMessage
worker.cpp:615: info: exiting OnSessionMessage
worker.cpp:262: info: exiting createSessionAndGenerateRequest
lib.cpp:94: info: exiting CreateSessionAndGenerateRequest
lib.cpp:112: info: CloseSession; promise_id = 7; session_id = FB946F5DF993F46889F1436AF3ED823C; session_id_size = 32
worker.cpp:281: info: closeSession
worker.cpp:643: info: OnSessionClosed; session_id = FB946F5DF993F46889F1436AF3ED823C; session_id_size = 32
lib.cpp:475: info: onSessionClosed
lib.cpp:478: info: exiting onSessionClosed
worker.cpp:647: info: exiting OnSessionClosed
worker.cpp:590: info: OnResolvePromise; promise_id = 7
lib.cpp:417: info: onResolvePromise
lib.cpp:420: info: exiting onResolvePromise
worker.cpp:594: info: exiting OnResolvePromise
worker.cpp:287: info: exiting closeSession
lib.cpp:117: info: exiting CloseSession
lib.cpp:87: info: CreateSessionAndGenerateRequest; promise_id = 8; session_type = 0; init_data_type = 0; init_data = 5a3066e0ac00; init_data_size = 83
worker.cpp:254: info: createSessionAndGenerateRequest
worker.cpp:581: info: OnResolveNewSessionPromise; promise_id = 8; session_id = 58D3B19291D0C6DDF57BB18528E5044D; session_id_size = 32
lib.cpp:408: info: onResolveNewSessionPromise
lib.cpp:412: info: exiting onResolveNewSessionPromise
worker.cpp:586: info: exiting OnResolveNewSessionPromise
worker.cpp:609: info: OnSessionMessage; session_id = 58D3B19291D0C6DDF57BB18528E5044D; session_id_size = 32; message_type = 0; message =




ER���i|d�{M�"0; message_size = 1708
lib.cpp:436: info: onSessionMessage
lib.cpp:441: info: exiting onSessionMessage
worker.cpp:615: info: exiting OnSessionMessage
worker.cpp:262: info: exiting createSessionAndGenerateRequest
lib.cpp:94: info: exiting CreateSessionAndGenerateRequest
lib.cpp:112: info: CloseSession; promise_id = 9; session_id = 58D3B19291D0C6DDF57BB18528E5044D; session_id_size = 32
worker.cpp:281: info: closeSession
worker.cpp:643: info: OnSessionClosed; session_id = 58D3B19291D0C6DDF57BB18528E5044D; session_id_size = 32
lib.cpp:475: info: onSessionClosed
lib.cpp:478: info: exiting onSessionClosed
worker.cpp:647: info: exiting OnSessionClosed
worker.cpp:590: info: OnResolvePromise; promise_id = 9
lib.cpp:417: info: onResolvePromise
lib.cpp:420: info: exiting onResolvePromise
worker.cpp:594: info: exiting OnResolvePromise
worker.cpp:287: info: exiting closeSession
lib.cpp:117: info: exiting CloseSession
lib.cpp:87: info: CreateSessionAndGenerateRequest; promise_id = 10; session_type = 0; init_data_type = 0; init_data = 5a3066e0ad20; init_data_size = 83
worker.cpp:254: info: createSessionAndGenerateRequest
worker.cpp:581: info: OnResolveNewSessionPromise; promise_id = 10; session_id = C657AF97B7C51B91285D47DDF4E264CF; session_id_size = 32
lib.cpp:408: info: onResolveNewSessionPromise
lib.cpp:412: info: exiting onResolveNewSessionPromise
worker.cpp:586: info: exiting OnResolveNewSessionPromise
worker.cpp:609: info: OnSessionMessage; session_id = C657AF97B7C51B91285D47DDF4E264CF; session_id_size = 32; message_type = 0; message =




ER���i|d�{M�"0; message_size = 1707
lib.cpp:436: info: onSessionMessage
lib.cpp:441: info: exiting onSessionMessage
worker.cpp:615: info: exiting OnSessionMessage
worker.cpp:262: info: exiting createSessionAndGenerateRequest
lib.cpp:94: info: exiting CreateSessionAndGenerateRequest
lib.cpp:112: info: CloseSession; promise_id = 11; session_id = C657AF97B7C51B91285D47DDF4E264CF; session_id_size = 32
worker.cpp:281: info: closeSession
worker.cpp:643: info: OnSessionClosed; session_id = C657AF97B7C51B91285D47DDF4E264CF; session_id_size = 32
lib.cpp:475: info: onSessionClosed
lib.cpp:478: info: exiting onSessionClosed
worker.cpp:647: info: exiting OnSessionClosed
worker.cpp:590: info: OnResolvePromise; promise_id = 11
lib.cpp:417: info: onResolvePromise
lib.cpp:420: info: exiting onResolvePromise
worker.cpp:594: info: exiting OnResolvePromise
worker.cpp:287: info: exiting closeSession
lib.cpp:117: info: exiting CloseSession
lib.cpp:87: info: CreateSessionAndGenerateRequest; promise_id = 12; session_type = 0; init_data_type = 0; init_data = 5a3066e0ae40; init_data_size = 83
worker.cpp:254: info: createSessionAndGenerateRequest
worker.cpp:581: info: OnResolveNewSessionPromise; promise_id = 12; session_id = 6CDB4407D2FF7A997431C955A9BDA6BB; session_id_size = 32
lib.cpp:408: info: onResolveNewSessionPromise
lib.cpp:412: info: exiting onResolveNewSessionPromise
worker.cpp:586: info: exiting OnResolveNewSessionPromise
worker.cpp:609: info: OnSessionMessage; session_id = 6CDB4407D2FF7A997431C955A9BDA6BB; session_id_size = 32; message_type = 0; message =




ER���i|d�{M�"0; message_size = 1708
lib.cpp:436: info: onSessionMessage
lib.cpp:441: info: exiting onSessionMessage
worker.cpp:615: info: exiting OnSessionMessage
worker.cpp:262: info: exiting createSessionAndGenerateRequest
lib.cpp:94: info: exiting CreateSessionAndGenerateRequest
lib.cpp:112: info: CloseSession; promise_id = 13; session_id = 6CDB4407D2FF7A997431C955A9BDA6BB; session_id_size = 32
worker.cpp:281: info: closeSession
worker.cpp:643: info: OnSessionClosed; session_id = 6CDB4407D2FF7A997431C955A9BDA6BB; session_id_size = 32
lib.cpp:475: info: onSessionClosed
lib.cpp:478: info: exiting onSessionClosed
worker.cpp:647: info: exiting OnSessionClosed
worker.cpp:590: info: OnResolvePromise; promise_id = 13
lib.cpp:417: info: onResolvePromise
lib.cpp:420: info: exiting onResolvePromise
worker.cpp:594: info: exiting OnResolvePromise
worker.cpp:287: info: exiting closeSession
lib.cpp:117: info: exiting CloseSession
lib.cpp:87: info: CreateSessionAndGenerateRequest; promise_id = 14; session_type = 0; init_data_type = 0; init_data = 5a3066e0af00; init_data_size = 83
worker.cpp:254: info: createSessionAndGenerateRequest
worker.cpp:581: info: OnResolveNewSessionPromise; promise_id = 14; session_id = 38A855D128579682EF484BC61030F688; session_id_size = 32
lib.cpp:408: info: onResolveNewSessionPromise
lib.cpp:412: info: exiting onResolveNewSessionPromise
worker.cpp:586: info: exiting OnResolveNewSessionPromise
worker.cpp:609: info: OnSessionMessage; session_id = 38A855D128579682EF484BC61030F688; session_id_size = 32; message_type = 0; message =




ER���i|d�{M�"0; message_size = 1708
lib.cpp:436: info: onSessionMessage
lib.cpp:441: info: exiting onSessionMessage
worker.cpp:615: info: exiting OnSessionMessage
worker.cpp:262: info: exiting createSessionAndGenerateRequest
lib.cpp:94: info: exiting CreateSessionAndGenerateRequest
[3753:-31374592:0126/113512.883020:ERROR:bus.cc(407)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[3753:-31374592:0126/113512.883054:ERROR:bus.cc(407)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
lib.cpp:133: info: Decrypt
worker.cpp:304: info: decrypt
worker.cpp:329: info: exiting decrypt
lib.cpp:158: info: exiting Decrypt; status = 2
[3753:-31372800:0126/113558.771202:ERROR:registration_request.cc(305)] Registration HTTP response code not OK: 404
 
Followed the method used in the original post to allow Udemy course videos to play. On their website some lesson videos, but not all, seem to require widevine in order to load and play properly.
The steps in this post were able to solve the issue of lesson videos spinning indefinitely and not loading. So if some of your udemy lessons are loading while others are not, it could be related to this issue.

FreeBSD 14.0-RELEASE-p2
Chromium version: 120.0.6099.224
Foreign-cdm version: 20231217_3

Edit: Just tried Amazon Prime Video, don't know if it required widevine still, but the shows played perfectly.
 
Back
Top