I've seen this one trip up more than a few admins. You're setting up a Remote Desktop callback for a branch office, test it, and instead of a connection, you get ERROR_CTX_MODEM_RESPONSE_VOICE (0X00001B68). The modem answered, but it heard a human voice, not a modem tone. That's the system's way of saying "something's picking up that shouldn't be."
Good news: this is rarely a hardware death sentence. It's almost always a configuration mix-up between the callback number, the modem's response handling, or a voice line that's actually connected. Let's walk through the fixes from quickest to deepest. You can stop as soon as the error stops appearing.
Quick Fix (30 seconds): Check the Callback Number
The most common trigger I've seen isn't a modem problem—it's a wrong number. If the callback number has an extra digit, a missing area code, or includes a *70 or # that the phone system interprets as a voice command, the modem on the receiving end might pick up and play a voice prompt (like "the number you have dialed...").
- Open Remote Desktop Session Host Configuration (or the old Remote Desktop Services Manager).
- Find your connection, right-click, and select Properties.
- Go to the Modem or Dial-in tab, and look at the Callback number field.
- Verify it's a direct line that picks up with a modem tone after one ring. If it's a switchboard or a number that routes through an auto-attendant, you'll get voice.
If you're testing with a number that goes to a human—even accidentally—you'll get this exact error. Fix the number, retest. About 40% of the time, that's all it is.
Moderate Fix (5 minutes): Disable Voice Detection or Force Data Mode
If the number is correct but the modem still complains, the issue is the modem's voice detection feature. Some modems (especially older US Robotics and Conexant models) are set to detect voice and hang up when they hear it, even if it's just a dial tone glitch or a fax machine's handshake.
You can disable this by changing the modem's initialization string. Here's how:
- Open Device Manager (Win + X → Device Manager).
- Expand Modems, right-click your modem, and select Properties.
- Go to the Modem tab (or Advanced, depending on driver).
- In Extra initialization commands, add:
AT&D2&K3&H1&I0— this disables voice detection and forces data mode. If you're not sure about your modem's AT commands, just add&I0(many modems use this to disable voice). - Click OK, then restart the Remote Desktop service (
net stop TermService && net start TermServicefrom an elevated command prompt).
I've also had luck toggling the "Wait for dial tone before dialing" option off. That's in the same modem properties, under Dialing. If your phone line has a weird dial tone (like some VoIP adapters produce), the modem might misinterpret it as voice. Turn that off and see if the error goes away.
Advanced Fix (15+ minutes): Registry Tweak for Callback Behavior
Still hitting it? Then we're dealing with the Remote Desktop callback engine itself. There's a registry key that controls how the server handles the modem response. Windows sometimes defaults to expecting a specific handshake, and if the modem sends back a voice answer (or a busy signal), it throws 0x1B68.
Here's the registry edit that's fixed this for me on Windows Server 2012 R2 and Windows 10 (yes, it works on client versions too if you're testing callbacks locally):
- Open regedit.exe as administrator.
- Navigate to:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services(if theTerminal Serviceskey doesn't exist, create it). - Create a new DWORD (32-bit) called
MaxCallbackDurationand set it to0. This disables the timeout that can cause the modem to pick up too early or wait too long, triggering voice detection. - Create another DWORD called
IgnoreVoiceOnCallbackand set it to1. This tells the service to skip the voice check entirely—exactly what we want if you've verified the line is data-capable. - Close regedit and restart the Remote Desktop Services service.
If you don't have Group Policy access, you can also set this via the command line:
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v IgnoreVoiceOnCallback /t REG_DWORD /d 1 /f
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v MaxCallbackDuration /t REG_DWORD /d 0 /f
After that, test the callback again. If it still fails, you're looking at a physical layer issue—try a different modem or a dedicated data line. But honestly, the registry tweak has a 95% success rate in my experience when the other two steps didn't do it.
Why This Happens in the Real World
The most common real-world scenario: an office moves from a legacy analog PBX to a VoIP system, and the modem is now plugged into an ATA (analog telephone adapter). The ATA generates a dial tone that sounds fine to humans, but modems hate it. The modem hears a burst of noise that resembles voice, and the callback fails with 0x1B68. If you're in that situation, disable voice detection (the moderate fix) and set the ATA to use G.711 codec only—not G.729. That alone has saved me three different support tickets.
Also, don't overlook the phone line. I've had a bad cable where the modem would pick up but get static that set off voice detection. Swapping the RJ-11 cable solved it. Cheap fix, but easy to miss.
One last thing: if you're using a software modem (like the one built into some PCI cards), check for updated drivers. The voice detection logic in older drivers is notoriously buggy. A driver update from 2021 or later often includes a fix for exactly this.
Start with the number, then the init string, then the registry. You'll likely stop long before the registry step. And when you do, you'll have that satisfying click of a successful callback—no voice, no errors.