{"id":148,"date":"2026-02-16T10:02:03","date_gmt":"2026-02-16T10:02:03","guid":{"rendered":"https:\/\/www.myuremote.com\/website\/?page_id=148"},"modified":"2026-02-16T10:02:52","modified_gmt":"2026-02-16T10:02:52","slug":"ip-controller","status":"publish","type":"page","link":"https:\/\/www.myuremote.com\/website\/docs\/integrations\/ip-controller\/","title":{"rendered":"IP controller"},"content":{"rendered":"\n<section style=\"max-width:1000px;margin:0 auto;padding:26px 18px;line-height:1.6;\">\n\n  <header style=\"margin-bottom:18px;\">\n    <h1 style=\"font-size:clamp(26px,4vw,38px);line-height:1.15;margin:0;\">\n      MyURemote \u2194 IP Controller (Raw TCP Commands)\n    <\/h1>\n    <p style=\"margin:10px 0 0 0;max-width:930px;\">\n      Official guide for using the <strong>MyURemote \u201cIP\u201d controller<\/strong> to send\n      <strong>custom commands over TCP\/IP<\/strong> directly to network-enabled equipment.\n      No extra hardware is required.\n    <\/p>\n    <p style=\"margin:10px 0 0 0;opacity:.8;max-width:930px;\">\n      Use this controller when your device supports control over the network (IP) and you want to send\n      <strong>your own command strings<\/strong> to a specific <strong>IP address<\/strong> and <strong>TCP port<\/strong>.\n      Typical examples: AV receivers, matrix switchers, audio streamers, LED controllers, home automation gateways, and custom devices.\n    <\/p>\n  <\/header>\n\n  <!-- What this is \/ is not -->\n  <section style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;background:rgba(0,0,0,.02);\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">What the \u201cIP\u201d controller is (and isn\u2019t)<\/h2>\n    <ul style=\"margin:0 0 0 18px;\">\n      <li><strong>It is:<\/strong> a generic TCP command sender from MyURemote \u2192 sends raw strings to <strong>ip:port<\/strong>.<\/li>\n      <li><strong>It is not:<\/strong> auto-discovery for every brand\/device. You normally configure it manually.<\/li>\n      <li><strong>It is not:<\/strong> a serial bridge. If your device only has RS-232, use the <strong>serial<\/strong> controller + a TCP\u2194RS232 bridge.<\/li>\n      <li><strong>It is not:<\/strong> an HTTP\/REST API wrapper (although you can sometimes send HTTP-like lines over TCP if your device expects it).<\/li>\n    <\/ul>\n    <p style=\"margin:10px 0 0 0;opacity:.75;\">\n      If you need IR or RS-232 hardware I\/O, use <strong>Global Cach\u00e9<\/strong> (IR\/serial hardware) or the\n      <strong>serial<\/strong> controller (TCP\u2194RS232 bridges).\n    <\/p>\n  <\/section>\n\n  <!-- TOC -->\n  <section style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">Contents<\/h2>\n    <div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;\">\n      <a href=\"#concept\" style=\"text-decoration:none;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:10px 12px;display:block;\">\n        <strong>1.<\/strong> Concept\n      <\/a>\n      <a href=\"#usecases\" style=\"text-decoration:none;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:10px 12px;display:block;\">\n        <strong>2.<\/strong> Best use cases\n      <\/a>\n      <a href=\"#requirements\" style=\"text-decoration:none;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:10px 12px;display:block;\">\n        <strong>3.<\/strong> Requirements (device side)\n      <\/a>\n      <a href=\"#network\" style=\"text-decoration:none;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:10px 12px;display:block;\">\n        <strong>4.<\/strong> Network setup\n      <\/a>\n      <a href=\"#commandformat\" style=\"text-decoration:none;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:10px 12px;display:block;\">\n        <strong>5.<\/strong> Command format &#038; termination\n      <\/a>\n      <a href=\"#myuremote\" style=\"text-decoration:none;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:10px 12px;display:block;\">\n        <strong>6.<\/strong> MyURemote configuration\n      <\/a>\n      <a href=\"#testing\" style=\"text-decoration:none;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:10px 12px;display:block;\">\n        <strong>7.<\/strong> Testing strategy\n      <\/a>\n      <a href=\"#troubleshooting\" style=\"text-decoration:none;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:10px 12px;display:block;\">\n        <strong>8.<\/strong> Troubleshooting\n      <\/a>\n      <a href=\"#faq\" style=\"text-decoration:none;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:10px 12px;display:block;\">\n        <strong>9.<\/strong> FAQ\n      <\/a>\n      <a href=\"#changelog\" style=\"text-decoration:none;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:10px 12px;display:block;\">\n        <strong>10.<\/strong> Changelog\n      <\/a>\n    <\/div>\n  <\/section>\n\n  <hr style=\"opacity:.25;margin:18px 0;\" \/>\n\n  <!-- 1 -->\n  <section id=\"concept\" style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">1. Concept<\/h2>\n    <p style=\"margin:0 0 10px 0;\">\n      The MyURemote <strong>IP controller<\/strong> sends raw command strings to a device on your network using\n      <strong>TCP\/IP<\/strong>. You configure:\n      <strong>IP address<\/strong> + <strong>TCP port<\/strong>, then map buttons\/macros to the command strings.\n    <\/p>\n\n    <div style=\"border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px;margin:10px 0;\">\n      <strong>Typical flow<\/strong>\n      <p style=\"margin:8px 0 0 0;\">\n        <strong>MyURemote (tablet\/phone)<\/strong> \u2192 LAN\/Wi-Fi \u2192 <strong>IP device<\/strong> listening on a TCP port\n      <\/p>\n    <\/div>\n\n    <ul style=\"margin:0 0 0 18px;\">\n      <li>No IR emitters, no RS-232 cabling, no extra controller hardware.<\/li>\n      <li>Great for devices that already expose a TCP control port.<\/li>\n      <li>Works best when your device protocol is well documented (command strings + termination rules).<\/li>\n    <\/ul>\n  <\/section>\n\n  <!-- 2 -->\n  <section id=\"usecases\" style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">2. Best use cases<\/h2>\n\n    <div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px;\">\n      <div style=\"border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px;\">\n        <strong>AV &#038; Pro Control Devices<\/strong>\n        <ul style=\"margin:8px 0 0 18px;\">\n          <li>Matrix switchers<\/li>\n          <li>Audio DSP \/ amplifiers<\/li>\n          <li>Streamers \/ players with TCP control ports<\/li>\n          <li>Projectors with LAN control (TCP)<\/li>\n        <\/ul>\n      <\/div>\n      <div style=\"border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px;\">\n        <strong>Home Automation Gateways<\/strong>\n        <ul style=\"margin:8px 0 0 18px;\">\n          <li>Custom controllers that accept TCP messages<\/li>\n          <li>Automation hubs that expose LAN sockets<\/li>\n          <li>DIY \/ Arduino \/ ESP devices with TCP servers<\/li>\n        <\/ul>\n      <\/div>\n      <div style=\"border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px;\">\n        <strong>Custom Integrations<\/strong>\n        <ul style=\"margin:8px 0 0 18px;\">\n          <li>Devices without MyURemote native database support<\/li>\n          <li>Integrations where you already know the exact command strings<\/li>\n          <li>Rapid prototyping and testing<\/li>\n        <\/ul>\n      <\/div>\n    <\/div>\n\n    <p style=\"margin:10px 0 0 0;opacity:.75;\">\n      If your device only supports HTTP\/REST, you may still be able to use IP control in other MyURemote methods\n      (depending on your integration). This page specifically describes the raw TCP \u201cIP controller\u201d.\n    <\/p>\n  <\/section>\n\n  <!-- 3 -->\n  <section id=\"requirements\" style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">3. Requirements (device side)<\/h2>\n\n    <p style=\"margin:0 0 10px 0;\">\n      Your device must accept commands over <strong>TCP<\/strong> on a known port. Many devices expose a \u201ccontrol port\u201d\n      (sometimes called \u201cTelnet control\u201d, \u201cTCP API\u201d, \u201cASCII protocol\u201d, or \u201cLAN control\u201d).\n    <\/p>\n\n    <ul style=\"margin:0 0 0 18px;\">\n      <li>Device must be reachable on your LAN (same network).<\/li>\n      <li>Device must listen on a <strong>TCP port<\/strong> (example ports: 23, 80, 4998, 5000, 6000, 10001\u2026)<\/li>\n      <li>You must know the <strong>command strings<\/strong> and the required <strong>termination<\/strong> (CR\/LF\/CRLF\/none).<\/li>\n      <li>Some devices require <strong>login\/authentication<\/strong> after connecting (advanced case).<\/li>\n    <\/ul>\n\n    <p style=\"margin:10px 0 0 0;opacity:.75;\">\n      Note: If a device requires a multi-step session (login, prompts, stateful exchange), raw TCP control may require a custom integration.\n      For simple \u201csend command and receive response\u201d protocols, the IP controller is ideal.\n    <\/p>\n  <\/section>\n\n  <!-- 4 -->\n  <section id=\"network\" style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">4. Network setup<\/h2>\n\n    <ul style=\"margin:0 0 0 18px;\">\n      <li>MyURemote device (tablet\/phone) and your IP device must be on the <strong>same LAN\/Wi-Fi<\/strong>.<\/li>\n      <li>Avoid guest Wi-Fi networks and <strong>client isolation<\/strong>.<\/li>\n      <li>Use <strong>DHCP reservation<\/strong> so the device keeps a stable IP address.<\/li>\n      <li>If using VLANs\/firewalls, allow traffic to the required <strong>TCP port<\/strong>.<\/li>\n    <\/ul>\n\n    <div style=\"border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px;margin:10px 0;\">\n      <strong>Tip<\/strong>\n      <p style=\"margin:8px 0 0 0;\">\n        If the device IP changes, control will break. A DHCP reservation prevents this.\n      <\/p>\n    <\/div>\n  <\/section>\n\n  <!-- 5 -->\n  <section id=\"commandformat\" style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">5. Command format &#038; termination<\/h2>\n\n    <p style=\"margin:0 0 10px 0;\">\n      Most TCP control protocols expect one command per line and require a terminator such as\n      <strong>CR<\/strong> (<strong>\\r<\/strong>), <strong>LF<\/strong> (<strong>\\n<\/strong>), or <strong>CRLF<\/strong> (<strong>\\r\\n<\/strong>).\n      Others require no terminator or use binary payloads.\n    <\/p>\n\n    <div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px;margin:10px 0;\">\n      <div style=\"border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px;\">\n        <strong>ASCII + CR\/LF<\/strong>\n        <p style=\"margin:8px 0 0 0;\">\n          Most common. Example: <code>POWR 1\\r<\/code>\n        <\/p>\n      <\/div>\n      <div style=\"border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px;\">\n        <strong>Telnet-style<\/strong>\n        <p style=\"margin:8px 0 0 0;\">\n          Often port 23. May still behave like raw TCP + terminator.\n        <\/p>\n      <\/div>\n      <div style=\"border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px;\">\n        <strong>Binary payloads<\/strong>\n        <p style=\"margin:8px 0 0 0;\">\n          Some protocols use bytes (0x..). These can work, but require careful formatting.\n        <\/p>\n      <\/div>\n    <\/div>\n\n    <p style=\"margin:0;opacity:.75;\">\n      Important: the MyURemote IP controller sends the command exactly as you define it.\n      If a terminator is required, you must include it in the command definition (or use the appropriate device profile).\n    <\/p>\n  <\/section>\n\n  <!-- 6 -->\n  <section id=\"myuremote\" style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">6. MyURemote configuration<\/h2>\n\n    <h3 style=\"margin:12px 0 8px 0;font-size:15px;\">6.1 What you need<\/h3>\n    <ul style=\"margin:0 0 0 18px;\">\n      <li><strong>IP address<\/strong> of the target device<\/li>\n      <li><strong>TCP port<\/strong> the device listens on<\/li>\n      <li>Your device\u2019s <strong>command strings<\/strong> (from documentation or known working examples)<\/li>\n    <\/ul>\n\n    <h3 style=\"margin:12px 0 8px 0;font-size:15px;\">6.2 Setup overview<\/h3>\n    <p style=\"margin:0 0 10px 0;\">\n      In your MyURemote configuration, select controller type:\n      <strong>IP<\/strong>\n      and enter:\n      <strong>IP address<\/strong> + <strong>Port<\/strong>.\n      Then map buttons\/macros to your custom IP commands.\n    <\/p>\n\n    <div style=\"border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px;margin:10px 0;\">\n      <strong>Tip<\/strong>\n      <p style=\"margin:8px 0 0 0;\">\n        Start with a single \u201cPower\u201d or \u201cStatus\u201d command before building full remotes and macros.\n      <\/p>\n    <\/div>\n  <\/section>\n\n  <!-- 7 -->\n  <section id=\"testing\" style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">7. Testing strategy<\/h2>\n\n    <h3 style=\"margin:12px 0 8px 0;font-size:15px;\">7.1 Verify connectivity first<\/h3>\n    <ul style=\"margin:0 0 10px 18px;\">\n      <li>Confirm the device IP is reachable from your LAN.<\/li>\n      <li>Confirm the TCP port is open (device documentation \/ network tools).<\/li>\n      <li>Ensure no firewall\/VLAN blocks local traffic.<\/li>\n    <\/ul>\n\n    <h3 style=\"margin:12px 0 8px 0;font-size:15px;\">7.2 Verify command format<\/h3>\n    <ul style=\"margin:0 0 10px 18px;\">\n      <li>Check whether commands require <strong>\\r<\/strong>, <strong>\\n<\/strong>, or <strong>\\r\\n<\/strong>.<\/li>\n      <li>Check if commands are case sensitive.<\/li>\n      <li>Try a simple query\/status command if available.<\/li>\n    <\/ul>\n\n    <p style=\"margin:0;opacity:.75;\">\n      Many device control protocols provide a \u201cstatus\u201d command that returns a response, which is ideal for validation.\n    <\/p>\n  <\/section>\n\n  <!-- 8 -->\n  <section id=\"troubleshooting\" style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">8. Troubleshooting<\/h2>\n\n    <h3 style=\"margin:12px 0 8px 0;font-size:15px;\">Cannot connect \/ timeout<\/h3>\n    <ul style=\"margin:0 0 10px 18px;\">\n      <li>Confirm IP address and TCP port are correct.<\/li>\n      <li>Ensure tablet\/phone and the device are on the same LAN (no guest isolation).<\/li>\n      <li>Check VLAN\/firewall rules.<\/li>\n      <li>Use DHCP reservation to avoid IP changes.<\/li>\n    <\/ul>\n\n    <h3 style=\"margin:12px 0 8px 0;font-size:15px;\">Connected, but device does nothing<\/h3>\n    <ul style=\"margin:0 0 10px 18px;\">\n      <li>Most common cause: missing\/incorrect terminator (<strong>\\r<\/strong>, <strong>\\n<\/strong>, <strong>\\r\\n<\/strong>).<\/li>\n      <li>Verify command syntax (case, spaces, prefixes).<\/li>\n      <li>Check if the device requires a login\/session handshake.<\/li>\n    <\/ul>\n\n    <h3 style=\"margin:12px 0 8px 0;font-size:15px;\">Works once, then stops<\/h3>\n    <ul style=\"margin:0 0 10px 18px;\">\n      <li>Some devices require persistent connections; others require reconnect per command.<\/li>\n      <li>If the device has a \u201csingle client\u201d limit, another app may already be connected.<\/li>\n    <\/ul>\n  <\/section>\n\n  <!-- 9 -->\n  <section id=\"faq\" style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">9. FAQ<\/h2>\n\n    <h3 style=\"margin:12px 0 8px 0;font-size:15px;\">Do I need extra hardware for IP control?<\/h3>\n    <p style=\"margin:0;opacity:.75;\">\n      No. If your device exposes a TCP control port on your LAN, MyURemote can send commands directly to it.\n    <\/p>\n\n    <h3 style=\"margin:12px 0 8px 0;font-size:15px;\">Is this the same as HTTP\/REST?<\/h3>\n    <p style=\"margin:0;opacity:.75;\">\n      Not necessarily. This controller sends raw TCP strings. Some devices use HTTP-like text over TCP, but many use custom ASCII protocols.\n    <\/p>\n\n    <h3 style=\"margin:12px 0 8px 0;font-size:15px;\">What if my device requires authentication?<\/h3>\n    <p style=\"margin:0;opacity:.75;\">\n      If authentication requires a multi-step session (login prompts), a custom integration may be required. For simple command protocols, the IP controller is ideal.\n    <\/p>\n  <\/section>\n\n  <!-- 10 -->\n  <section id=\"changelog\" style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">10. Changelog<\/h2>\n    <ul style=\"margin:0 0 0 18px;\">\n      <li><strong>v1<\/strong> \u2013 Initial MyURemote \u201cIP controller\u201d guide (raw TCP command sending).<\/li>\n    <\/ul>\n  <\/section>\n\n<\/section>\n\n","protected":false},"excerpt":{"rendered":"<p>MyURemote \u2194 IP Controller (Raw TCP Commands) Official guide for using the MyURemote \u201cIP\u201d controller to send custom commands over TCP\/IP directly to network-enabled equipment. No extra hardware is required. Use this controller when your device supports control over the network (IP) and you want to send your own command strings to a specific IP [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":28,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-148","page","type-page","status-publish","hentry"],"blocksy_meta":{"has_hero_section":"disabled","styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":6}},"_links":{"self":[{"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/pages\/148","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/comments?post=148"}],"version-history":[{"count":1,"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/pages\/148\/revisions"}],"predecessor-version":[{"id":149,"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/pages\/148\/revisions\/149"}],"up":[{"embeddable":true,"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/pages\/28"}],"wp:attachment":[{"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/media?parent=148"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}