How to Configure a Manual Firewall Entry on a JACE 9000
The JACE 9000 has a built-in host firewall. Services Niagara knows about are opened automatically; anything listening on another port needs a manual firewall entry.
The JACE 9000 is the first JACE built on a hardened Linux platform with its own firewall. That is good for security, but it catches engineers out: a driver that worked on a JACE 8000 suddenly receives nothing on a JACE 9000, because the port it listens on is closed. This guide explains how the firewall behaves, which ports Niagara uses, when you need a manual entry, how to add one, and how to test and document it.
Watch the JACE9000 Firewall video in our advanced engineering guides to see the screens step by step.
How the JACE 9000 firewall works
The firewall controls inbound connections to the JACE:
- Ports used by core Niagara services configured on the platform, such as platform connections, Fox/FoxS station connections and the web server, are managed as part of the platform configuration.
- Ports used by drivers and services that listen for incoming connections may not be opened automatically, especially non-standard ports or third-party modules.
- Outbound connections the JACE makes itself, for example polling a Modbus TCP device, sending email or connecting to an MQTT broker, are generally not the problem; the replies come back on the same connection.
The rule of thumb: if something on the network needs to start a conversation with the JACE on a port the platform does not already manage, add a manual firewall entry.
Ports commonly used by Niagara
| Service | Default port | Protocol | Direction (from JACE's view) |
|---|---|---|---|
| Platform (plain) | 3011 | TCP | Inbound |
| Platform (TLS) | 5011 | TCP | Inbound |
| Fox (station, plain) | 1911 | TCP | Inbound |
| FoxS (station, TLS) | 4911 | TCP | Inbound |
| HTTP | 80 | TCP | Inbound |
| HTTPS | 443 | TCP | Inbound |
| BACnet/IP | 47808 (0xBAC0) | UDP | Inbound and outbound |
| Modbus TCP (JACE as server/slave) | 502 | TCP | Inbound |
| SNMP agent | 161 | UDP | Inbound |
| SNMP traps received | 162 | UDP | Inbound |
| MQTT broker on the JACE | 1883 / 8883 (TLS) | TCP | Inbound |
| NTP time sync | 123 | UDP | Outbound |
| Email (SMTP submission) | 587 or 465 | TCP | Outbound |
| DNS | 53 | UDP/TCP | Outbound |
Plain (non-TLS) ports should normally be disabled on production systems in favour of their TLS equivalents.
When you need a manual firewall entry
Typical situations:
- the JACE acts as a Modbus TCP server (slave) so a third-party system can read it on port 502
- a second BACnet/IP network is configured on a non-standard UDP port such as 47809
- a third-party driver listens for incoming data, for example a protocol where the field device sends unsolicited messages to the JACE
- the JACE runs an MQTT broker that other devices connect to
- SNMP monitoring or trap reception is used
- a web or Fox service has been moved to a non-default port
Symptoms are usually clear: the device or system on the other side reports a timeout or "connection refused", the JACE's driver shows nothing arriving, and the same configuration works on a JACE 8000 or a PC.
Before you add an entry
- Confirm the service is listening. Check the driver or service is enabled in the station and configured for the port you expect.
- Identify the exact port and protocol. TCP or UDP matters; a TCP rule will not pass UDP traffic.
- Identify which interface traffic arrives on. The JACE 9000 has two Ethernet interfaces (en0 and en1) and, optionally, Wi-Fi. Open the port only where it is needed.
- Check the network path. A site firewall, VLAN ACL or Windows firewall elsewhere can block the same traffic. Test from a device on the same subnet first.
- Take a platform backup before making changes.
Adding a manual firewall entry: the process
The firewall is managed from Workbench through the JACE 9000's platform:
- Open a platform connection to the JACE 9000 in Workbench (TLS, port 5011 by default).
- Open the platform's network/firewall configuration, as shown in the JACE9000 Firewall video. Exact view and field names can differ between Niagara releases.
- Add a new entry describing the traffic to allow:
- port (for example 502)
- protocol (TCP or UDP)
- interface, where the option is offered (for example en0)
- a clear description if a field is available (for example "Modbus TCP server for BMS-to-EMS link")
- Save the configuration. Some changes take effect immediately; others require a platform restart. Follow the prompts.
- Test from the remote device.
If you are not sure whether your Niagara release exposes a given option, check the JACE 9000 documentation for that release or contact our support team.
Testing the new entry
- TCP: from a laptop on the same subnet, test the port (for example with PowerShell
Test-NetConnection 192.168.1.50 -Port 502). "TcpTestSucceeded: True" means the port is reachable. - UDP: port tests are less conclusive because UDP has no handshake. Test with the real application (a BACnet discovery, an SNMP query) and watch the driver's statistics.
- Application level: confirm the remote system reads correct values, and check the JACE's application director output for errors.
Build a port schedule for every site
A simple port schedule avoids most firewall surprises and makes conversations with IT departments much easier:
| Host | Interface | Port | Protocol | Direction | Purpose | Source allowed |
|---|---|---|---|---|---|---|
| JACE-01 | en0 | 5011 | TCP | Inbound | Platform (TLS) | Engineering VLAN |
| JACE-01 | en0 | 4911 | TCP | Inbound | FoxS from supervisor | Supervisor IP |
| JACE-01 | en0 | 443 | TCP | Inbound | HTTPS for operators | BMS user VLAN |
| JACE-01 | en1 | 47808 | UDP | Both | BACnet/IP plant network | Plant subnet |
| JACE-01 | en0 | 502 | TCP | Inbound | Modbus TCP server for EMS | EMS server IP |
| JACE-01 | en0 | 123 | UDP | Outbound | NTP | Time server |
| JACE-01 | en0 | 587 | TCP | Outbound | Email alarms | Mail relay |
Add a row for every new service as part of the change. The same table tells you which manual firewall entries the JACE needs and which rules the site firewall needs.
Working with IT departments
On corporate sites, the BMS often shares infrastructure with IT, and IT teams rightly want to know what every device is doing. To get approvals quickly:
- send the port schedule before installation, not after something breaks
- explain direction: most BMS traffic is inbound to controllers from known hosts, or outbound to known services
- prefer TLS: FoxS, HTTPS and MQTT over TLS are much easier to approve than plain-text protocols
- propose segmentation: a BMS VLAN with firewall rules between it and the corporate network
- agree remote access: a managed VPN or cloud remote access service, not port forwarding
Troubleshooting table
| Symptom | Likely cause | Check |
|---|---|---|
| "Connection refused" from remote system | Port closed on JACE firewall, or service not listening | Service enabled? Manual entry present for port/protocol? |
| Timeout from remote system | Network path blocked (site firewall, VLAN ACL, routing) | Test from the same subnet; check gateway configuration |
| Works on en0 but not en1 | Gateway on both interfaces, or entry only on one interface | Gateway on en0 only; entry on correct interface |
| BACnet discovery finds nothing across subnets | Broadcasts not routed | BBMD configuration, UDP 47808 allowed |
| Works then stops after reboot | Entry not saved, or a platform update reset configuration | Re-check entries after updates |
Security good practice
A firewall entry is a hole in the controller's defences, so keep each one deliberate:
- open only what is needed: one port, one protocol, the right interface
- prefer encrypted services: FoxS, HTTPS, MQTT over TLS, and disable plain-text equivalents
- restrict at the network level too: use VLANs and site firewalls so only the systems that need the port can reach it
- document every entry: port, protocol, interface, purpose, who requested it and when
- review entries at each maintenance visit and remove ones no longer needed
- never expose Niagara ports directly to the internet; use a VPN or a secure cloud service for remote access
Other JACE 9000 network gotchas
Two default gateways. If you set a default gateway on both en0 and en1, Linux keeps only the first and silently ignores the second, so traffic arriving on the other port cannot return. Set the gateway on en0 only and leave en1 blank.
SD card missing. Without its SD card, a JACE 9000 reports an incomplete Host ID and licensing fails, which can look like a network problem during commissioning.
Long first commissioning. A factory-fresh JACE 9000 can take 15 to 20 minutes or more to complete its first commissioning while the operating system and Niagara are unpacked. Increase Workbench's device reboot timeout if it gives up early, and do not power cycle the controller during this time.
Example: exposing a Modbus TCP server
A site's energy management system needs to read 40 values from the BMS. The integrator configures a Modbus TCP server (slave) in the JACE 9000 station on port 502 and maps the points. The EMS reports "connection refused". The fix:
- confirm the Modbus server is enabled and listening on 502 in the station
- add a manual firewall entry for TCP 502 on en0, the interface facing the EMS network
- test from the EMS server with a port test, then with a Modbus read of a known register
- ask site IT to restrict port 502 on the network to the EMS server's IP address
- record the entry in the O&M documentation
Frequently asked questions
Does the JACE 9000 have a firewall?
Yes. It has a built-in host firewall that controls inbound connections. Core platform and station services are managed through the platform configuration, while other listening ports may need manual entries.
Why does my driver work on a JACE 8000 but not a JACE 9000?
If the driver listens for incoming connections, the JACE 9000 firewall may be blocking its port. Add a manual firewall entry for the port and protocol.
What port does Niagara Fox use?
Fox uses TCP 1911 and FoxS (TLS) uses TCP 4911 by default.
What port does BACnet use on a JACE?
BACnet/IP normally uses UDP 47808. Additional BACnet/IP networks may use other ports, which may need manual firewall entries.
Do I need firewall entries for outbound connections?
Usually not. Problems are almost always with inbound connections to services listening on the JACE.
Do firewall entries survive a Niagara upgrade?
They should, but always re-check firewall entries and services after upgrading or recommissioning a JACE 9000, and keep your port schedule up to date so any missing entry is quick to restore.
Should I disable plain-text ports on a JACE 9000?
Yes, once TLS equivalents are working: use FoxS instead of Fox, HTTPS instead of HTTP and platform TLS instead of plain platform connections.
Do I need a firewall entry for a Modbus TCP client connection from the JACE?
Usually not. When the JACE polls a Modbus TCP device, it opens the connection outbound and replies return on it. Entries are needed when other systems connect in to the JACE.
Does the firewall affect BACnet MS/TP or Modbus RTU?
No. Serial networks on the RS-485 ports are not IP traffic and are not affected by the IP firewall.
Can I open ports to access the JACE from the internet?
You should not expose Niagara ports directly to the internet. Use a VPN or a secure remote access service.
How do I test whether a TCP port is open on the JACE?
From a Windows PC on the same network, run Test-NetConnection with the JACE's IP address and port in PowerShell. A successful TCP test shows the port is reachable and something is listening.
Can I restrict a firewall entry to one source IP address?
Where the JACE 9000's configuration does not offer source restrictions, restrict access at the network level with VLANs and site firewall rules instead.
Need help from a Niagara engineer?
If this guide has not solved the problem, contact the Tyrrell Products technical team on 01942 732819 or [email protected]. Tell us the controller or host type, its Niagara version and what you have already tried, and we will help you get the system running.