System Requirements
- Windows 10 or later (64-bit)
- .NET 8.0 Runtime
- A SIP account from your VoIP provider or PBX
- A microphone and speakers (or headset)
- Network access to your SIP server (typically port 5060 UDP or TCP)
Getting Started
- Launch HelixPhone.
- Go to Settings (gear icon in the left sidebar).
- Enter your SIP account details:
- Server: Your SIP server address (e.g. sip.provider.com)
- Port: Usually 5060 (the default)
- Transport: UDP (default) or TCP
- Username: Your SIP extension or account number
- Password: Your SIP password
- Display Name: The name shown to people you call
- Click Save.
- Click the Register button in the top bar, or enable Auto Register.
- When the status shows "Registered" in green, you're ready!
Settings & Configuration
Access settings by clicking the gear icon in the left sidebar.
SIP Account
- Server: Your SIP server hostname or IP address
- Port: SIP port, usually 5060
- Transport: UDP (faster, default) or TCP (more reliable)
- Username: Your SIP account username or extension number
- Password: Your SIP account password
- Display Name: Your caller ID name
- Registration Expiry: How often the phone re-registers (default 3600s)
Audio
- Input Device: Select which microphone to use
- Output Device: Select which speaker to use
- Volume: Master volume slider (0 to 100)
Tip: Use a headset for best call quality and to avoid echo.
Making Calls
- Click the Dial Pad icon in the left sidebar.
- Enter the phone number using the on-screen keypad or your keyboard.
- Click the green Call button or press Enter.
- The phone will ring the remote party. You'll see "Ringing..." status.
- When answered, the call connects and the timer starts.
Outbound calls have a 60-second timeout. If the remote party doesn't answer within 60 seconds, the call is automatically cancelled.
Receiving Calls
When someone calls your extension:
- An incoming call popup appears with the caller's number and name (if available).
- Click Answer to accept or Reject to decline.
- If you don't answer and the caller hangs up, it's logged as "missed".
Note: If you're already on a call, a call waiting notification appears at the top of the screen. You can answer or reject the second call. If Do Not Disturb is enabled, incoming calls and call waiting are automatically rejected.
During a Call
- Mute: Toggle your microphone on/off. The remote party can't hear you when muted. Button highlights yellow when active.
- Hold: Place the call on hold. Click again to resume. Button highlights yellow when active. Remote hold is also detected if the other party holds you.
- DTMF: Open the touch-tone keypad to navigate phone menus or enter PINs. Button highlights blue when open.
- Transfer: Open the transfer panel for blind or attended transfers, or merge calls into a conference. Button highlights blue when open.
- Hang Up: End the call. Always visible at the bottom of the screen.
Call Transfers
Blind Transfer (Immediate)
Transfers the caller directly without speaking to the destination first.
- During a call, click Transfer.
- Enter the destination number.
- Click "Blind Transfer".
- The caller is immediately transferred.
Attended Transfer (Consultative)
Lets you speak to the receiving party before completing the transfer.
- During a call, click Transfer.
- Enter the destination number.
- Click "Attended Transfer".
- Your original caller is placed on hold.
- When the destination answers, talk to them privately.
- Click "Complete Transfer" to connect them, or "Cancel" to return to the original caller.
3-Way Conference Calling
Both HelixPhone and HelixConnect support 3-way conference calls with real-time audio mixing.
- During an active call, click Transfer to open the transfer panel.
- Enter the second party's number and initiate an attended transfer.
- Once the second party answers, click Merge to create a conference.
- All three parties can now hear each other. A "CONFERENCE" badge appears on screen.
- To end the conference, click End Conf or Hang Up.
Conference uses real-time PCM mixing via RTP packet interception for clear audio quality.
Call Waiting & Call Swap
If a second call comes in while you're already on a call:
- A non-blocking toast notification appears at the top of the screen with the caller's info.
- Click Answer to accept the second call (your current call is placed on hold).
- Click Reject to decline the second call.
- A held call info bar shows who is on hold.
- Use the Swap button to switch between your active call and the held call.
Note: When Do Not Disturb is enabled, call waiting is automatically rejected.
Do Not Disturb
DND mode automatically rejects all incoming calls and call waiting notifications.
- Toggle DND using the button in the header bar.
- DND state is saved to your settings and persists between sessions.
- In HelixPhone, toggling DND fires a webhook status update (
do_not_disturb). - In HelixConnect, a red text indicator shows when DND is active.
Speed Dial
Configure frequently-called contacts for one-click dialing.
- Click the Speed Dial icon in the left sidebar.
- Add entries with a name and phone number.
- Click any entry to dial immediately.
- Remove entries you no longer need.
- Speed dial entries are saved to your settings file.
Call History
Click the clock icon in the left sidebar to view your call log. The history shows:
- Direction (inbound/outbound)
- Phone number and display name
- Duration
- Disposition (answered, missed, rejected, failed)
- Timestamp
Click any entry to dial that number again. History is stored locally in a SQLite database.
Presence / Status
Your presence status indicates your availability:
- Available — Ready to receive calls
- Busy — Manually set; occupied
- Away / Lunch — Stepped away
- Do Not Disturb — Don't want to be contacted
- Offline — Not registered
Click the status dropdown in the header to change your status. Every change fires a webhook to your configured endpoint.
Call Recording
When enabled, HelixPhone automatically records all calls:
- Recording starts when a call is answered
- Both sides are mixed into a single WAV file
- Files are saved to
%LOCALAPPDATA%\HelixPhone\recordings\ - If configured, files are automatically uploaded to your server
Multiple SIP Accounts (HelixConnect only)
HelixConnect supports configuring and managing multiple SIP accounts from a single application.
- Account Selector: Use the dropdown in the header bar to switch between accounts.
- Registration Status: Each account shows a green or grey indicator dot for its registration state.
- Register/Unregister: Register or unregister individual accounts independently.
- Incoming Calls: Calls are automatically routed to the correct account. The account label is shown on the incoming call popup.
- Account Settings: Each account has its own Server, Port, Transport, Username, Password, Display Name, Account Label, and Registration Expiry.
To add a new account, go to Settings and click "Add Account". To remove an account, select it and click "Remove".
Troubleshooting
Cannot Register
- Verify your SIP server address, port, username, and password
- Check your firewall allows outbound traffic on port 5060
- Try switching between UDP and TCP transport
No Audio on Calls
- Check your microphone and speaker selections in Settings
- Use the "Test Audio" button to verify your speaker works
- Ensure your microphone isn't muted at the system level
One-Way Audio
- Usually a NAT/firewall issue
- Try switching from UDP to TCP transport
- Disable SIP ALG on your router if possible
Log files are located at: %LOCALAPPDATA%\HelixPhone\logs\