Softphone setup
Connect MicroSIP to CodeB
MicroSIP is a free Windows softphone. Once registered against your CodeB tenant it behaves like any other extension — it rings when someone dials your username, your name pops up on a CodeB Webphone, and you can dial out through the same trunks the browser uses.
Install MicroSIP
Download the latest MicroSIP Lite from www.microsip.org/downloads and run the installer. The standard build is fine — you do not need the Pro edition.
MicroSIP runs on Windows 7 and newer. There is no portable version published by the project itself, but the installer puts everything under %ProgramFiles%\MicroSIP and adds a tray icon when launched.
Get your SIP credentials
Ask your CodeB administrator for:
- Username — a short identifier (e.g.
test,stefan). - Password — the plaintext password that goes into MicroSIP.
- Tenant domain — the hostname of your CodeB instance, e.g.
phone.codeb.io. This is also your SIP realm.
register.html page (admin area). Passwords are hashed in your browser before they reach the server.
Add the account in MicroSIP
Right-click the MicroSIP window → Account — or pick Add Account… from the menu — and fill the dialog with the values below. The example uses tenant phone.codeb.io and username test; substitute your own.
| Account Name | Anything you like — this label only shows up inside MicroSIP. CodeB or microsip works fine. |
|---|---|
| SIP Server | Your CodeB tenant hostname, e.g. phone.codeb.io. Same as the domain. |
| SIP Proxy | The bridge address with its SIP port, e.g. phone.codeb.io:6070. On the same LAN as the server you can use the local IP instead, e.g. 192.168.0.20:6070 — this avoids one DNS hop. |
| Username * | The username your admin created — e.g. test. |
| Domain * | Same value as SIP Server, e.g. phone.codeb.io. CodeB uses the request domain as the tenant key, so this must match your tenant exactly. |
| Login | Same value as Username. (MicroSIP allows them to differ for some PBXes; CodeB does not.) |
| Password | The plaintext password your admin gave you. |
| Display Name | How you want to appear to others — e.g. your first name. Shown as caller-ID on calls you make. |
All other fields (encryption, NAT, codecs, etc.) can be left at MicroSIP’s defaults. Leave Auth Name blank — MicroSIP will reuse the Login.
Working example
- Account Name
- microsip
- SIP Server
- phone.codeb.io
- SIP Proxy
- phone.codeb.io:6070
- Username *
- test
- Domain *
- phone.codeb.io
- Login
- test
- Password
- ••••
- Display Name
- stefan
Click Save. MicroSIP will try to register straight away.
Verify it registered
Look at MicroSIP’s status line at the top of the window — the indicator next to the account name should turn green within a second or two, and the status text reads Online. If it stays yellow or red, jump to the troubleshooting section below.
To confirm from the server side, open https://<your-tenant>/registrar.html in a browser. Your username should appear in the list with a fresh lastRefreshUtc timestamp. The contact URI will already have been rewritten to your public source endpoint — that is normal and is what lets the bridge reach you back through NAT.
Place a test call
From the MicroSIP keypad:
- Dial your own CodeB Webphone username — if someone has the CodeB Webphone open on the same tenant, their tab should ring.
- Dial a room name like
r_demo— you join that conference room as an audio peer. Important: rooms that should be reachable from a SIP softphone must have a name starting withr_. The bridge uses that prefix to recognise the dial target as a room (and not a user); any name without it is treated as a user/extension and will not route to a conference room. - Dial a full E.164 number like
+4980012345— the bridge will route the call through your configured outbound trunks according to the rules onoutbound-routing.html.
Inbound calls work the same way: anything routed to your username via inbound-routing.html — whether it originated from the browser, from another softphone, or from a PSTN trunk — will ring MicroSIP.
r_<something> (e.g. r_sales, r_standup, r_demo). A room called just sales won’t be reachable from a softphone — only browser participants can join it.
Troubleshooting
Status stays yellow with “Stopped” or “Forbidden”
Usually means the username or password is wrong, or the realm does not match. Re-check Step 3, paying attention to the Domain field — it must equal your tenant hostname exactly, e.g. phone.codeb.io with no path, no scheme, no port.
If you have admin access, regenerate the password on register.html and paste the new one straight into MicroSIP.
Status stays yellow with “Request Timeout” or no response
The SIP proxy is unreachable. Verify the port in SIP Proxy — it must be the public SIP port of the bridge, typically 6070. From the same machine, run Test-NetConnection phone.codeb.io -Port 6070 in PowerShell. If it fails, your firewall or your provider is blocking UDP on that port.
If you are on the same LAN as the server, try the local IP form (e.g. 192.168.0.20:6070) instead. NAT traversal between two private networks is not configured for SIP UDP.
Registers fine but inbound calls do not ring MicroSIP
Two common causes. First, your username may not be in any inbound route — ask your admin to add an entry on inbound-routing.html mapping the DID (or caller pattern) to your username. Second, NAT can drop the contact path after roughly 30 seconds of silence; MicroSIP defaults to a 60-second re-registration which keeps the pinhole open. If you still see drops, lower “Re-register every” in MicroSIP’s account settings to 30 seconds.
Call connects but I hear no audio
Almost always RTP being blocked by a router. CodeB streams G.711 (PCMA / PCMU) over the same public IP as the SIP signalling, on dynamic UDP ports. Make sure your router’s SIP-ALG is disabled — consumer SIP-ALG implementations are notorious for breaking SDP. On FRITZ!Box, no special setting is needed; just confirm nothing else is consuming the port range MicroSIP advertises.
Re-registers loudly every few seconds
MicroSIP’s default re-register interval is 60 seconds — if you see it firing more often than that, the server is rejecting the registration and MicroSIP is retrying. Open dial-log.html on the server to see the rejection reason (most often: wrong password or unknown user).
dial-log.html, almost any registration or call issue can be pinpointed in under a minute.