Got it working! ;)
Requirement: Rocksmith no-real-tone-cable "patch" http://adf.ly/QBPpk
Source: http://www.alessandrogonella.com/2013/02/how-to-play-rocksmith-without-the-real-tone-cable/
Application Details:
Version: | 1.1 |
License: | Shareware |
URL: | http://rocksmith.ubi.com/ |
Votes: | 0 |
Latest Rating: | Gold |
Latest Wine Version Tested: | 1.9.5 |
Maintainers: About Maintainership
What works
Everything as far as I noticed, once you get it running. Audio gives some trouble and your graphics driver may limit success.
There are at least 2 configurations that work (on a distro with pulseaudio):
1. Use pulseaudio for everything. This is bad because of the audio latency. Also your guitar cable detection is somewhat random and the capture crackles quite easily with increasing CPU load, causing note detection to fail.
2. Use wine ALSA driver for audio and pulseaudio driver for ALSA output. I did not have to switch off the Rocksmith cable from pulseaudio manager.
Audio latency was ok on my systems.
What does not
Needs a lot of CPU power, or audio starts crackling.
With the nouveau graphics driver the game failed after the startup screens. With nvidia binary driver, looks flawless.
With Wine forced to use ALSA driver audio works, with WINE pulseaudio driver does not.
Workarounds
What was not tested
Technique game section was not tested.
Hardware tested
Graphics:
Additional Comments
Test systems: laptop i5-5200U with nouveau+GT920M (not working) same laptop with bumblebee-nvidia (working) desktop i5-2500K with nvidia+GTS450 (working) fedora 23 kernel version 4.4.6-300 Intel HD audio driver Plasma and XFCE desktops
Operating system | Test date | Wine version | Installs? | Runs? | Used Workaround? | Rating | Submitter | ||
Current | Fedora 23 x86_64 | Mar 27 2016 | 1.9.5 | Yes | Yes | Gold | Martti Huttunen | ||
Show | Debian GNU/Linux 8.x "Jessie" x86_64 | Dec 21 2013 | 1.7.8 | Yes | Yes | Silver | Luke A. Guest | ||
Show | Fedora 19 x86_64 | Oct 20 2013 | 1.7.3 | Yes | Yes | Silver | oliver z. |
Bug # | Description | Status | Resolution | Other apps affected |
35214 | mmdevapi should support PKEY_AudioEndpoint_FormFactor | CLOSED | INVALID | View |
35224 | Rocksmith 2014 fails to detect USB Rocksmith Real Tone cable (needs Win32_PnPEntity WMI class) | CLOSED | INVALID | View |
37042 | Rocksmith requires exclusive mode access to the cable (missing support for PulseAudio backend) | STAGED | View |
The following comments are owned by whoever posted them. WineHQ is not responsible for what they say.
by Lockheed on Sunday September 23rd 2018, 8:26
Anyway - after spending the night crawling lots of old and partly outdated tips I just gave it a shot and fired steam in wine and then Rocksmith and ... it worked! Might be that some additional packages I installed triggered it. Anyway - will do some more tests and update this entry with a fresh test result.
by Luke A. Guest on Tuesday August 5th 2014, 12:24
"{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},0"=dword:00000004
"{B3F8FA53-0004-438E-9003-51A46E139BFC},2"="{1}.USB\\VID_12BA&PID_00FF&MI_00\\7&2443AC09&0&0000"
The first entry tells wine that this is a microphone, the second gives it's vendor and product id's.
Under PulseAudio, you have to add those two keys to the pulseaudio capture device, very strange, which is under HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Capture\{25DA76D0-033C-4235-9002-19F48894AC6F}.
I still have no audio recording from the cable at this time. Output is fine.
by Luke A. Guest on Tuesday August 5th 2014, 13:11
if(mode != AUDCLNT_SHAREMODE_SHARED && mode != AUDCLNT_SHAREMODE_EXCLUSIVE)
return AUDCLNT_E_NOT_INITIALIZED;
You will be able to get input from the guitar, unfortunately, it's really bad and you won't get further.
by Adam Bolte on Saturday December 20th 2014, 0:54
Is commenting these lines and re-compiling supposed to solve this problem? Or is it only to get audio captured if the cable is already detected?
I see
"{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},0"=dword:00000004
gets created automatically. However
"{B3F8FA53-0004-438E-9003-51A46E139BFC},2"="{1}.USB\\VID_12BA&PID_00FF&MI_00\\7&2443AC09&0&0000"
is always replaced by:
"{B3F8FA53-0004-438E-9003-51A46E139BFC},2"="{1}.USB\\VID_12BA&PID_00FF\\0&28D2DB3A"
every time the program is launched. Is that supposed to happen? Does it matter? Where did you get the 7&2443AC09 from?
This is all under [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Capture\{3524DE93-905E-446D-9A6E-C71A28D2DB3A}\Properties], despite using PulseAudio (well, Wine's using ALSA, and my .asoundrc defaults everything to pulse - not sure if you meant "pulse running and in use" or "wine with pulseaudio patches").
by Luke A. Guest on Sunday December 22nd 2013, 21:58
LONG ret;
/* HACK for Rocksmith cable test */
const GUID *ffid = &PKEY_AudioEndpoint_FormFactor.fmtid;
if (id->Data1 == ffid->Data1 && id->Data2 == ffid->Data2 && id->Data3 == ffid->Data3 &&
id->Data4[0] == ffid->Data4[0] && id->Data4[1] == ffid->Data4[1] && id->Data4[2] == ffid->Data4[2] &&
id->Data4[3] == ffid->Data4[3] && id->Data4[4] == ffid->Data4[4] && id->Data4[5] == ffid->Data4[5] &&
id->Data4[6] == ffid->Data4[6] && id->Data4[7] == ffid->Data4[7] && key->pid == PKEY_AudioEndpoint_FormFactor.pid)
{
if (flow == eCapture)
{
pv->vt = VT_UI4;
pv->u.ulVal = Microphone;
}
else
{
pv->vt = VT_UI4;
pv->u.ulVal = Speakers;
}
return S_OK;
}
/* END HACK */
hr = MMDevPropStore_OpenPropKey(devguid, flow, ®key);
This still didn't detect the device.
by oliver z. on Monday December 23rd 2013, 10:58
I was not able yet to get it working (RS2014) under Linux as there is atm no "no-cable"-patch available (small correction: they are but they dont work under wine).
by Luke A. Guest on Monday December 23rd 2013, 14:04
Now, after a few days of following wrong leads (GUID's) on MSDN, I found this
msdn.microsoft.com/en-us/library/windows/desktop/ee417014%28v=vs.85%29.aspx
which I believe they will have lifted and put into the game to detect the cable. I was right to add +wbemprox as the "cimv2" keeps popping up. I also believe this is being used as the guys who implemented the no-cable hack modified the dword with the pid/vid values in, the "pGuidProductFromDirectInput->Data1" in that link to make their cables work.
In essence, what we need to get this working is a way to add the PID_ff and VID_12ba into the registry so that that code can detect it properly.
Or best way, when the device is detected, put those values into the DIDEVICEINSTANCE::guidProduct element. This is done in the dinput dll for input devices.
by oliver z. on Monday December 23rd 2013, 14:40
by Luke A. Guest on Wednesday December 25th 2013, 14:10
Luke.
by Luke A. Guest on Sunday December 22nd 2013, 19:29
007e:trace:alsa:get_alsa_name_by_guid Found matching device key: L"1,plughw:2,0"
007e:trace:mmdevapi:MMDevice_AddRef Refcount now 1
007e:trace:alsa:AudioClient_AddRef (0x8671dd0) Refcount now 1
007e:trace:alsa:AudioClient_GetMixFormat (0x8671dd0)->(0x32f94c)
007e:trace:alsa:dump_fmt wFormatTag: 0xfffe (WAVE_FORMAT_EXTENSIBLE)
007e:trace:alsa:dump_fmt nChannels: 2
007e:trace:alsa:dump_fmt nSamplesPerSec: 48000
007e:trace:alsa:dump_fmt nAvgBytesPerSec: 384000
007e:trace:alsa:dump_fmt nBlockAlign: 8
007e:trace:alsa:dump_fmt wBitsPerSample: 32
007e:trace:alsa:dump_fmt cbSize: 22
007e:trace:alsa:dump_fmt dwChannelMask: 00000003
007e:trace:alsa:dump_fmt Samples: 0020
007e:trace:alsa:dump_fmt SubFormat: {00000003-0000-0010-8000-00aa00389b71}
007e:trace:alsa:AudioClient_Release (0x8671dd0) Refcount now 0
007e:trace:alsa:AudioClient_Stop (0x8671dd0)
007e:trace:mmdevapi:MMDevice_Release Refcount now 0
007e:trace:mmdevapi:MMDevice_SetPropValue Blob 0x86f0dd8 40
007e:trace:mmdevapi:MMDevice_SetPropValue Writing L"{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0" returned 0
007e:trace:mmdevapi:MMDevice_SetPropValue Blob 0x86f0dd8 40
007e:trace:mmdevapi:MMDevice_SetPropValue Writing L"{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3" returned 0
007e:trace:mmdevapi:MMDevEnum_QueryInterface (0x86f0ea0)->({a95664d2-9614-4f35-a746-de8db63617e6}, 0x32fb84)
007e:trace:mmdevapi:MMDevEnum_AddRef Refcount now 2
007e:trace:mmdevapi:MMDevEnum_AddRef Refcount now 3
007e:trace:mmdevapi:MMDevEnum_RegisterEndpointNotificationCallback (0x86f0ea0)->(0x12451cd0)
007e:trace:mmdevapi:MMDevEnum_Release Refcount now 2
007e:err:ole:CoInitializeEx Attempt to change threading model of this apartment from multi-threaded to apartment threaded
007e:trace:mmdevapi:DllGetClassObject ({bcde0395-e52f-467c-8e3d-c4579291692e}, {00000001-0000-0000-c000-000000000046}, 0x32f82c)
007e:trace:mmdevapi:MMCF_CreateInstance (0x7c4bfc18, (nil), {a95664d2-9614-4f35-a746-de8db63617e6}, 0x8671e68)
007e:trace:mmdevapi:MMDevEnum_QueryInterface (0x86f0ea0)->({a95664d2-9614-4f35-a746-de8db63617e6}, 0x8671e68)
007e:trace:mmdevapi:MMDevEnum_AddRef Refcount now 3
007e:trace:mmdevapi:MMDevEnum_GetDefaultAudioEndpoint (0x86f0ea0)->(0,1,0x32f8f4)
007e:trace:mmdevapi:MMDevice_AddRef Refcount now 1
007e:trace:mmdevapi:MMDevice_GetId (0x8671840)->(0x32f8f8)
007e:trace:mmdevapi:MMDevice_GetId returning L"{0.0.0.00000000}.{BD12F083-8FC3-4629-8ECC-479A5CA0D81A}"
007e:trace:mmdevapi:MMDevice_Release Refcount now 0
007e:trace:mmdevapi:MMDevEnum_GetDefaultAudioEndpoint (0x86f0ea0)->(1,1,0x32f8f4)
007e:trace:mmdevapi:MMDevice_AddRef Refcount now 1
007e:trace:mmdevapi:MMDevice_GetId (0x86f1800)->(0x32f8f8)
007e:trace:mmdevapi:MMDevice_GetId returning L"{0.0.1.00000000}.{AC2B8964-242E-4C02-9A5A-29F7723ABA4A}"
007e:trace:mmdevapi:MMDevice_Release Refcount now 0
007e:trace:mmdevapi:MMDevEnum_EnumAudioEndpoints (0x86f0ea0)->(2,1,0x32f8e4)
007e:trace:mmdevapi:MMDevCol_GetCount (0x8671a70)->(0x8671e6c)
007e:trace:mmdevapi:MMDevCol_Item (0x8671a70)->(0, 0x8672888)
007e:trace:mmdevapi:MMDevice_AddRef Refcount now 1
007e:trace:mmdevapi:MMDevice_GetId (0x86f0d20)->(0x32f8f8)
007e:trace:mmdevapi:MMDevice_GetId returning L"{0.0.1.00000000}.{4B4E922F-B62B-42D8-9A3D-E4EE473607DA}"
007e:trace:mmdevapi:MMDevice_GetState (0x86f0d20)->(0x8672c8c)
007e:trace:mmdevapi:MMDevice_OpenPropertyStore (0x86f0d20)->(0,0x32f8ec)
007e:trace:mmdevapi:MMDevPropStore_GetValue (0x8671d10)->("{a45c254e-df1c-4efd-8020-67d146a850e0},14", 0x32f894)
007e:trace:mmdevapi:MMDevPropStore_GetValue (0x8671d10)->("{f19f064d-082c-4e27-bc73-6882a1bb8e4c},0", 0x32f8b8)
007e:trace:mmdevapi:MMDevPropStore_GetValue (0x8671d10)->("{1da5d803-d492-4edd-8c23-e0c0ffee7f0e},0", 0x32f884)
007e:warn:mmdevapi:MMDevice_GetPropValue Reading L"{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},0" returned 2
007e:trace:mmdevapi:MMDevPropStore_GetCount (0x8671d10)->(0x32f8b4)
007e:trace:mmdevapi:MMDevPropStore_GetCount Returning 5
007e:trace:mmdevapi:MMDevPropStore_GetAt (0x8671d10)->(0,0x32f8fc)
007e:trace:mmdevapi:MMDevPropStore_GetValue (0x8671d10)->("{233164c8-1b2c-4c7d-bc68-b671687a2567},1", 0x32f8a4)
007e:trace:mmdevapi:MMDevPropStore_GetAt (0x8671d10)->(1,0x32f8fc)
007e:trace:mmdevapi:MMDevPropStore_GetAt (0x8671d10)->(2,0x32f8fc)
007e:trace:mmdevapi:MMDevPropStore_GetAt (0x8671d10)->(3,0x32f8fc)
007e:trace:mmdevapi:MMDevPropStore_GetValue (0x8671d10)->("{e4870e26-3cc5-4cd2-ba46-ca0a9a70ed04},3", 0x32f8a4)
007e:trace:mmdevapi:MMDevPropStore_GetAt (0x8671d10)->(4,0x32f8fc)
007e:trace:mmdevapi:MMDevPropStore_GetValue (0x8671d10)->("{f19f064d-082c-4e27-bc73-6882a1bb8e4c},0", 0x32f8a4)
007e:trace:mmdevapi:MMDevPropStore_Release Refcount now 0
007e:trace:mmdevapi:MMDevice_QueryInterface (0x86f0d20)->({1be09788-6894-4089-8586-9a2a6c265ac5},0x32f8e8)
007e:trace:mmdevapi:MMEndpoint_AddRef (0x86f0d20)
007e:trace:mmdevapi:MMDevice_AddRef Refcount now 2
007e:trace:mmdevapi:MMEndpoint_GetDataFlow (0x86f0d20)->(0x8672c90)
007e:trace:mmdevapi:MMEndpoint_Release (0x86f0d20)
007e:trace:mmdevapi:MMDevice_Release Refcount now 1
007e:trace:mmdevapi:MMDevice_Activate (0x86f0d20)->(0x10f8aa4,1,(nil),0x32f8f8)
007e:trace:alsa:AUDDRV_GetAudioEndpoint {4b4e922f-b62b-42d8-9a3d-e4ee473607da} 0x86f0d20 0x32f8f8
Firstly, I'd like to say that I'm actually testing RS 2014, not the original, but as they're using the same Audio code (or similar), it should work for both versions.
My RT cable has GUID of 4b4e922f-b62b-42d8-9a3d-e4ee473607da on Wine.
The line: MMDevPropStore_GetValue (0x8671d10)->("{1da5d803-d492-4edd-8c23-e0c0ffee7f0e},0", 0x32f884) is failing returning a value of 2 which is not success.
According to MSDN, this line is wanting to know what kind of device this is, see msdn.microsoft.com/en-us/library/windows/desktop/dd316569%28v=vs.85%29.aspx, it should return Microphone for the RT cable. This is at least one reason why the game is not detecting the cable.