Recuperar un Grandstream GXP16xx usado o bloqueado no siempre requiere del botón físico de reset — de hecho, estos modelos no traen botón de reset. Cuando la contraseña admin no nos deja entrar a la web y el menú del teléfono aparece bloqueado, la salida sigue existiendo: se puede restablecer de fábrica usando el endpoint factory reset del propio firmware, a través de HTTP/HTTPS. Aquí está la guía que funcionó en un caso real, paso a paso.
Cuándo aplicar esta guía
Este procedimiento te sirve si estás ante alguna de estas situaciones:
- Teléfono usado o heredado del que no conocemos la contraseña admin.
- La web pide contraseña y no entra con
admin/admin. - El menú del teléfono está bloqueado (modo restringido) y no permite
MENU → Config → Factory Reset. - No hay botón de reset físico en estos modelos (no existe combo de teclas, ni pinhole).
Cómo funciona el truco
Este firmware (GUI GWT, firmware 1.0.4.x y similares) expone endpoints cgi-bin por HTTP/HTTPS. El truco está en tres puntos:
- El teléfono tiene por defecto la cuenta end-user
user/123— casi nunca la cambian aunque cambien la de admin. - Con esa sesión (rol user), el endpoint
api-sys_operationacepta un factory reset (request=RESET). - Tras el reset, el teléfono vuelve a fábrica: credenciales
admin/adminy configuración de red por DHCP.
Requisitos
- PC en la misma red que el teléfono (mismo switch o router).
curl— incluido en Windows 10/11, Linux y macOS.- El teléfono encendido y conectado por cable.
Procedimiento
1. Obtén la IP del teléfono
Mírala en la pantalla del teléfono (suele mostrarse arriba a la izquierda), o descúbrela con un barrido de la red:
# Windows - barrido de la red y búsqueda de Grandstream (MAC 00:0b:82)
foreach ($n in 1..254) {
$ip = "192.168.100.$n"
$p = New-Object System.Net.NetworkInformation.Ping
if ($p.Send($ip, 250).Status -eq 'Success') { $ip }
}
arp -a | Select-String "0b-82"
2. Verifica que la web responde
El teléfono sirve la web por HTTP (puerto 80) o HTTPS (puerto 443). Prueba ambos:
Test-NetConnection <IP> -Port 443 # HTTPS
Test-NetConnection <IP> -Port 80 # HTTP
3. Login con la cuenta end-user por defecto
# HTTPS (si el 443 estaba abierto)
curl -k -X POST -d "username=user&password=123" "https://<IP>/cgi-bin/dologin"
# HTTP (si el 80 estaba abierto)
curl -X POST -d "username=user&password=123" "http://<IP>/cgi-bin/dologin"
Respuesta esperada:
{ "response": "success", "body": { "sid": "xxxxxx", "role": "user" } }
Si devuelve "body": "wrong4" u otro error, ve a "Casos especiales".
4. Ejecuta el factory reset
Con el sid obtenido:
curl -k -X POST --data-urlencode "request=RESET" --data-urlencode "sid=<SID>" "https://<IP>/cgi-bin/api-sys_operation"
Respuesta esperada:
{ "response": "success", "body": "reset" }
El teléfono se reinicia y vuelve a fábrica (2-5 minutos).
5. Encuentra la nueva IP (vuelve a DHCP)
# Espera ~3-4 min y repite el barrido
foreach ($n in 1..254) {
$ip = "192.168.100.$n"
$p = New-Object System.Net.NetworkInformation.Ping
if ($p.Send($ip, 250).Status -eq 'Success') { $ip }
}
arp -a | grep "0b-82"
Anota la IP nueva (ej. 192.168.100.20).
6. Confirma el acceso admin
curl -k -X POST -d "username=admin&password=admin" "https://<NUEVA-IP>/cgi-bin/dologin"
Esperado: { "response": "success", "body": { "sid": "xxxx", "role": "admin" } }.
admin, el teléfono quedó de fábrica. Opcionalmente haz el reset desde la web: botón Factory Reset arriba a la derecha.Casos especiales
La web no responde en la IP que muestra el teléfono
- El teléfono puede tener IP fija en otra subred, o estar en otro segmento. Conéctalo al mismo switch que el PC y comprueba que estén en la misma subred.
- Si tiene IP fija y no pide DHCP, el option 66 / provisioning NO le llega — los métodos de "empujar config por TFTP" no funcionan. El método de esta guía sí funciona con IP fija porque usa la web directamente.
user/123 no entra
- Prueba la cuenta admin con contraseñas típicas:
admin,1234,123456,8888,admin123,Grandstream,password. - Cuidado: el firmware puede tener bloqueo por intentos fallidos (por defecto ~5 intentos). Reintenta espaciado o reinicia el teléfono para limpiar el contador. El endpoint
api-get_lockoutinforma del estado. Los intentos endologinno dañan nada del teléfono, solo pueden bloquear temporalmente la web.
El teléfono sirve la web por HTTP en vez de HTTPS
Normal en algunos firmware o configuraciones. Simplemente usa http:// y sin -k (no hay certificado).
El reset no reinicia o la web no vuelve
- Espera al menos 5 minutos (el factory reset más el arranque tardan).
- Prueba hacer el paso 4 de nuevo con una sesión nueva.
- Como último recurso:
MENU → Config → Factory Reset(si el menú quedó desbloqueado tras el reset).
Métodos alternativos (por si esta vía no aplica)
- LCD:
MENU → Config → Factory Reset → OK. Solo si el menú no está bloqueado. - TFTP + DHCP option 66 (servidor TFTPD64 en el PC + cfg<MAC>.xml con la contraseña): solo si el teléfono usa DHCP y el router entrega option 66. No funciona con IP fija.
- Pegatina trasera: algunos modelos traen la contraseña admin impresa.
- GDMS / Grandstream: para equipos registrados en una cuenta GDMS se puede cambiar la contraseña admin de forma remota.
Resumen de endpoints usados
| Endpoint | Método | Uso |
|---|---|---|
/cgi-bin/dologin | POST | username=X&password=Y → devuelve sid y role |
/cgi-bin/api-sys_operation | POST | request=RESET&sid=... → factory reset |
/cgi-bin/api-get_lockout | GET | estado de bloqueo por intentos |
/cgi-bin/api.values.get | POST | leer valores de config |
/cgi-bin/api.values.post | POST | escribir valores (normalmente requiere admin) |
La GUI es GWT (JavaScript). No hace falta abrirla en el navegador para esto; todo se puede hacer con curl.
Si tienes un teléfono VoIP bloqueado o heredado y prefieres que lo revisemos nosotros, en ByteHUB configuramos y dejamos operativos equipos Grandstream y otras marcas, con soporte incluido.