Skip to content

Ruijie Reyee and WiFiDog gateways ​

How to connect Ruijie / Reyee gateways (ePortalV2 or WiFiDog mode) and any other WiFiDog gateway to Kiwire.

Device type in KiwireRuijie / Reyee (Ruijie hardware); WifiDog (other WiFiDog gateways)
Redirect URLePortalV2: https://<kiwire-host>/login/ruijie-reyee · WiFiDog: auth server <kiwire-host>, path /wifidog/ruijie
RADIUSePortalV2: auth 1812 / acct 1813 (UDP) · WiFiDog: not used
Identity must equalePortalV2: the nasid the gateway sends (also its NAS-Identifier) · WiFiDog: the gateway ID (gw_id)
Disconnect / live changes (CoA)ePortalV2: yes, port 3799 · WiFiDog: no RADIUS CoA; a disconnect takes effect at the gateway's next check-in
Data capsePortalV2: time limits only · WiFiDog: speed and session time at login; data caps checked by Kiwire from the traffic the gateway reports

Which entry to pick ​

  • Ruijie gateway, ePortalV2 (external portal with RADIUS): Vendor Ruijie / Reyee, redirect to /login/ruijie-reyee.
  • Ruijie gateway, WiFiDog mode: Vendor Ruijie / Reyee, WiFiDog auth server path /wifidog/ruijie.
  • Any other WiFiDog gateway (OpenWrt and similar): Vendor WifiDog, same WiFiDog path /wifidog/ruijie — the "ruijie" in the path is just the name of Kiwire's WiFiDog endpoint and works for every WiFiDog gateway. There is no separate /login/wifidog address; do not use one.

Which of the two modes your Ruijie hardware offers depends on the model and firmware.

How a login works ​

ePortalV2

How a guest logs in through Ruijie ePortalV2 and Kiwire The guest joins the Wi-Fi and opens a page. The Ruijie ePortalV2 device redirects the browser to Kiwire at /login/ruijie-reyee. Kiwire shows the portal and the guest signs in. Kiwire hands the login back to the device: POST to login_url. The device then asks Kiwire over RADIUS, identifying itself with nasid = NAS-ID. Kiwire accepts and returns the profile's limits, the device lets the guest out and starts sending accounting. Later, Kiwire can disconnect the guest or change their limits with CoA on port 3799.Guest devicephone, laptopRuijie ePortalV2Reyee gateway / Ruijie CloudKiwireportal + RADIUSInternetafter acceptance1 JOINS THE SSID, OPENS A PAGE2 REDIRECT TO/login/ruijie-reyee3 PORTAL PAGE — THE GUEST SIGNS IN4 HAND-BACK:POST to login_url5 RADIUS REQUEST — IDENTITY =nasid = NAS-ID6 ACCEPT + PROFILE LIMITS7 GUEST IS LET OUT; ACCOUNTING STARTS8 LATER: DISCONNECT / CHANGE LIMITS (CoA, PORT 3799)
Steps 2 and 4 are the controller's side of the portal, step 5 is its RADIUS side. When the page loads but the login never completes, the break is almost always at step 4 (the login address) or step 5 (the Identity or the shared secret).

After the portal, the guest's browser posts username, password and next_url to the gateway's login_url. next_url is the page the gateway passed as destination, or Google's home page when it passed none.

WiFiDog

How a guest logs in through WiFiDog and Kiwire The guest joins the Wi-Fi and opens a page. The WiFiDog device redirects the browser to Kiwire at /wifidog/ruijie/login. Kiwire shows the portal and the guest signs in. Kiwire hands the login back to the device: GET gateway /wifidog/auth?token. The device then asks Kiwire over RADIUS, identifying itself with gw_id, over HTTP (no RADIUS). Kiwire accepts and returns the profile's limits, the device lets the guest out and starts sending accounting. Guest devicephone, laptopWiFiDogRuijie or other gatewayKiwireportal + RADIUSInternetafter acceptance1 JOINS THE SSID, OPENS A PAGE2 REDIRECT TO/wifidog/ruijie/login3 PORTAL PAGE — THE GUEST SIGNS IN4 HAND-BACK:GET gateway /wifidog/auth?token5 RADIUS REQUEST — IDENTITY =gw_id, over HTTP (no RADIUS)6 ACCEPT + PROFILE LIMITS7 GUEST IS LET OUT; ACCOUNTING STARTS
In WiFiDog mode there is no RADIUS: at steps 5 and 6 the gateway calls Kiwire over HTTP with a one-time token, and Kiwire answers with the guest's speed and time limits; the gateway then keeps checking in over HTTP while the guest is online. When the page loads but the guest never gets online, check that the gateway itself can reach your Kiwire host over HTTPS.

Before you start ​

From Kiwire: <kiwire-host>; for ePortalV2 also the RADIUS server address shown in the Setup Guide checklist ("Before you add your controller") and a shared secret of at most 64 characters.

On the gateway: admin access (local web UI or Ruijie Cloud), the guest SSID/VLAN, and the gateway's ID or MAC.

On the controller ​

Menu names and commands vary between firmware versions; the values are what matter.

ePortalV2 (Ruijie Cloud or the gateway's web UI):

  1. Auth & Account › Captive Portal › add a policy, Policy Mode = External.
  2. Portal Server URL = https://<kiwire-host>/login/ruijie-reyee; Portal IP = the address <kiwire-host> resolves to (ask Synchroweb if unsure).
  3. RADIUS authentication and accounting server = <radius-server-ip>, ports 1812 / 1813, key <shared-secret>; set the NAS-Identifier to the same value the gateway sends as nasid.
  4. Auth & Account › Allowlist: add <kiwire-host>, fonts.googleapis.com, fonts.gstatic.com and anything your portal design loads. See Walled garden and redirect.

WiFiDog (Ruijie or any WiFiDog gateway):

  1. Enable WiFiDog / third-party authentication on the guest network.
  2. Auth server host <kiwire-host>, path /wifidog/ruijie (the base path only — not /wifidog/ruijie/login; the gateway adds login, auth, ping and portal itself).
  3. Use HTTPS on port 443. Plain HTTP (port 80) does not reach Kiwire's WiFiDog service, so a gateway that can only use plain HTTP will not work today. Whichever you choose, the gateway itself must be able to reach <kiwire-host> — it calls Kiwire directly to check each login and to send heartbeats.
  4. Set the gateway ID (gw_id) to a fixed value if the firmware lets you; by default it is usually the device MAC.
  5. Add <kiwire-host> and the font hosts above to the gateway's trusted / allowed domains.

In Kiwire ​

  1. System › Device Controller › add:
    • Vendor: Ruijie / Reyee (or WifiDog for a non-Ruijie WiFiDog gateway).
    • Identity: the nasid value (ePortalV2) or the gateway ID gw_id (WiFiDog), exactly as sent — for example c4b25bb96961.
    • Shared Secret Key: <shared-secret> (used for ePortalV2 RADIUS; required by the form either way).
    • Advanced Configuration › Network Configuration: IP Address of the gateway and COA Port 3799 for ePortalV2. For WiFiDog, set Monitoring Method = Wifidog so the controller shows as running while its heartbeats arrive.
  2. Check the redirect parameters with Redirect and login config: Kiwire reads client_mac, client_ip, nasid, login_url, ssid, vlan (ePortalV2); WiFiDog's own gw_id, mac, ip, gw_address, gw_port and url are translated automatically.
  3. Add a zone rule and journey: Controllers and zones, Portal designer.

Test it ​

  1. Portals › Troubleshoot › Controller Test › Start Capture, connect a phone, and check the MAC and controller ID arrive and the gateway shows as registered.
  2. Log in as a real guest. In WiFiDog mode the phone is sent back through the gateway and then on to its original page.
  3. Reporting › Login › Active Session lists the guest. For WiFiDog, the Device Controller status should read running once heartbeats arrive.

Limits to know ​

  • WiFiDog: the gateway gets the profile's speed limit and session time when the guest logs in. A data cap works only if the gateway reports each guest's traffic when it checks in; Kiwire adds it up and drops the guest once the cap is used. Some gateways report no traffic at all, and then the cap can't apply, so check a test guest's usage under Reporting. When a guest's account expires, runs out of time or data, is suspended, is disconnected by an admin, or moves to another profile, Kiwire refuses the gateway's next check-in and the gateway drops the guest then (up to about 10 minutes), not instantly. After a profile change the guest logs in again and gets the new profile's limits.
  • ePortalV2: no Ruijie data-cap attribute; profiles are enforced by time (Session-Timeout).
  • The Identity must match exactly; c4b25bb96961 and C4:B2:5B:B9:69:61 are different values.

Vendor reference ​

Last updated:

Kiwire platform documentation