# Control Naim Uniti or Naim Mu-so via IP command flows

**URL:** https://community.homey.app/t/control-naim-uniti-or-naim-mu-so-via-ip-command-flows/111904
**Category:** Flows
**Created:** [June 23, 2024, 10:45pm UTC](https://community.homey.app/t/control-naim-uniti-or-naim-mu-so-via-ip-command-flows/111904 "2024-06-23T22:45:07Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![zigvespa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/zigvespa/32/7788_2.png) [@zigvespa](https://community.homey.app/u/zigvespa)
#### Post date: [June 23, 2024, 10:45pm UTC](https://community.homey.app/t/control-naim-uniti-or-naim-mu-so-via-ip-command-flows/111904/1 "2024-06-23T22:45:07Z")

</div>

[Naim](https://www.naimaudio.com/) is a British manufacturer of HiFi equipment that has released mid-end and high-end all-in-one streamers in their Mu-so and Uniti (Atom, Star and Nova) lines.

As far as I know, there is no public release of the API for IP/http control of the Naim units.

Since there is a Naim iOS/Android app available, I figured that it should be possible to reverse engineer the IP commands to control Naim all-in-ones with Homey. With some trial and error, I managed to extract some basic commands to control the Naim units via Homey flows.

First, get your local IP address of your Naim device. The port used by Naim for http-requests is: 15081.

You can make flows using _logic_:

 ![IMG_5992](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/9/7/9764464d76949068a3c48dfb882fe25b86449b73.jpeg)

The following specific IP commands can be used:

**Power on** send a PUT request to:  
http://[Naim IP]:15081/power?system=on

**Power standby** send a PUT request to:  
http://[Naim IP]:15081/power?system=lona

**Set source/input** send a GET request to:  
http://[Naim IP]:15081/inputs/ana1?cmd=select

ana1 = analog source #1  
ana2 = analog source #2  
dig1 = digital source #1  
dig2 = digital source #2  
Etc.

**Play** send a GET request to:  
http://[Naim IP]:15081/nowplaying?cmd=play

**Pause** send a GET request to:  
http://[Naim IP]:15081/nowplaying?cmd=pause

**Stop** send a GET request to:  
http://[Naim IP]:15081/nowplaying?cmd=stop

**Mute volume** send a PUT request to:  
http://[Naim IP]:15081/levels/room?mute=1

**Unmute volume** send a PUT request to:  
http://[Naim IP]:15081/levels/room?mute=0

**Set volume to a specific value (“25” in this example)** send a PUT request to:  
http://[Naim IP]:15081/levels/room?volume=25

_edit 08/2025: updated startpost with new commands for overview_

**Toggle Play/Pause** send a GET request to:  
http://[Naim IP]:15081/nowplaying?cmd=playpause

**Next Track** send a GET request to:  
http://[Naim IP]:15081/nowplaying?cmd=next

**Previous Track** send a GET request to:  
http://[Naim IP]:15081/nowplaying?cmd=prev

**Start playing a streaming service or the play queue** send a GET request to:  
http://[Naim IP]:15081/inputs/spotify?cmd=play

available streams (replace “spotify” in the commandline above):  
-spotify  
-tidal  
-qobuz  
-playqueue (start the playing queue)

**Play a favourite or preset** send a GET request to: http://[Naim.ip.address]:15081/favourites/[code]?cmd=play  
In order to retrieve the unique codes per favourite/preset: [read these instructions](https://community.homey.app/t/control-naim-uniti-or-naim-mu-so-via-ip-command-flows/111904/8)

There is a volumeIncrease command, but so far I could not get this to work. Any help/suggestions to get this to work would be appreciated.

---

<div class="post-metadata">

### Author: ![zigvespa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/zigvespa/32/7788_2.png) [@zigvespa](https://community.homey.app/u/zigvespa)
#### Post date: [June 24, 2024, 10:16pm UTC](https://community.homey.app/t/control-naim-uniti-or-naim-mu-so-via-ip-command-flows/111904/2 "2024-06-24T22:16:48Z")

</div>

A few extra commands:

**Toggle Play/Pause** send a GET request to:  
http://[Naim IP]:15081/nowplaying?cmd=playpause

**Next Track** send a GET request to:  
http://[Naim IP]:15081/nowplaying?cmd=next

**Previous Track** send a GET request to:  
http://[Naim IP]:15081/nowplaying?cmd=prev

As a temporary workaround for volume control, the following strategy can be used:

- install the Naim Uniti / Mu-So unit as a Chromecast device in Homey.
- use the Chromecast flow chart ‘Set relative volume to [%]’. 1% increases the current volume by 1.

---

<div class="post-metadata">

### Author: ![Tolga](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/tolga/32/12563_2.png) [@Tolga](https://community.homey.app/u/Tolga)
#### Post date: [June 30, 2024, 3:10pm UTC](https://community.homey.app/t/control-naim-uniti-or-naim-mu-so-via-ip-command-flows/111904/3 "2024-06-30T15:10:20Z")

</div>

Hi @zigvespa , dont know maybe this helps? The author makes this for my Neeo Remote. [meta-naim/naim.json at main · jac459/meta-naim · GitHub](https://github.com/jac459/meta-naim/blob/main/naim.json)

---

<div class="post-metadata">

### Author: ![zigvespa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/zigvespa/32/7788_2.png) [@zigvespa](https://community.homey.app/u/zigvespa)
#### Post date: [June 30, 2024, 7:19pm UTC](https://community.homey.app/t/control-naim-uniti-or-naim-mu-so-via-ip-command-flows/111904/4 "2024-06-30T19:19:49Z")

</div>

> [@Tolga](#):
>
> Hi @zigvespa , dont know maybe this helps? The author makes this for my Neeo Remote.

Thanks, I’ve searched quite some Github codes to discover commands to control Naim units (in case anyone is wondering, Uniti units use Zigbee on the remotes, not IR).

Hadn’t seen this particular one yet. The direct IP commands I had already discovered.

Not really sure how to translate these volume up/down command lines to code that I can feed Homey through logic or any other type of flow. Anyone able to help?

```auto
"VOLUME UP": {
                "label": "",
                "type": "static",
                "command": "",
                "evalwrite": [
                    {
                        "variable": "VolumePlayed",
                        "value": "DYNAMIK (Number($VolumePlayed)<100)?Number($VolumePlayed)+1:100"
                    }
                ],
                "evaldo": [
                    {
                        "test": true,
                        "then": "__VOLUMESET",
                        "or": ""
                    }
                ]
            },
            "VOLUME DOWN": {
                "label": "",
                "type": "static",
                "command": "",
                "evalwrite": [
                    {
                        "variable": "VolumePlayed",
                        "value": "DYNAMIK (Number($VolumePlayed)>0)?Number($VolumePlayed)-1:0"
                    }
                ],
                "evaldo": [
                    {
                        "test": true,
                        "then": "__VOLUMESET",
                        "or": ""
                    }
                ]
            },

```

---

<div class="post-metadata">

### Author: ![rln1965](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/rln1965/32/28288_2.png) [@rln1965](https://community.homey.app/u/rln1965)
#### Post date: [August 1, 2025, 7:13am UTC](https://community.homey.app/t/control-naim-uniti-or-naim-mu-so-via-ip-command-flows/111904/5 "2025-08-01T07:13:48Z")

</div>

> [@zigvespa](#):
>

Is it possible to select the presets on my Mu-So ?

---

<div class="post-metadata">

### Author: ![zigvespa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/zigvespa/32/7788_2.png) [@zigvespa](https://community.homey.app/u/zigvespa)
#### Post date: [August 1, 2025, 9:22am UTC](https://community.homey.app/t/control-naim-uniti-or-naim-mu-so-via-ip-command-flows/111904/6 "2025-08-01T09:22:14Z")

</div>

> [@rln1965](#):
>
> Is it possible to select the presets on my Mu-So ?

The commands listed above are the only ones I have discovered so far. Unfortunately, there is no public API/documentation by Naim.

I assume you do not mean your input sources when you mention ‘presets’?

---

<div class="post-metadata">

### Author: ![rln1965](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/rln1965/32/28288_2.png) [@rln1965](https://community.homey.app/u/rln1965)
#### Post date: [August 1, 2025, 10:31am UTC](https://community.homey.app/t/control-naim-uniti-or-naim-mu-so-via-ip-command-flows/111904/7 "2025-08-01T10:31:11Z")

</div>

on the dial of my Mu-so qb 2 are 5 presets, numbered 1-5. Sorry for the dust ; )

 ![IMG_1542](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/4/e/4e626bcc088bae57b53f9aa4eb90fb42d3723824.jpeg)

---

<div class="post-metadata">

### Author: ![zigvespa](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/zigvespa/32/7788_2.png) [@zigvespa](https://community.homey.app/u/zigvespa)
#### Post date: [August 2, 2025, 2:48pm UTC](https://community.homey.app/t/control-naim-uniti-or-naim-mu-so-via-ip-command-flows/111904/8 "2025-08-02T14:48:58Z")

</div>

> [@rln1965](#):
>
> on the dial of my Mu-so qb 2 are 5 presets, numbered 1-5. Sorry for the dust ; )

Sending http commands to presets or favourites on a Naim Uniti or MuSo is possible - but it takes some extra steps. Every favourite has a unique code. You first have to retrieve this code by sending the following command to your Naim in a console app:

GET http://[Naim.ip.address]:15081/favourites?

In the console app (you can use any app you like as long as you can see the results returned - I use the app [Teste](https://apps.apple.com/nl/app/teste-api-scripts-terminal/id1575521212?l=en-GB) on iOS) you will get a response that displays all the codes. In this example, my playlist called “_Old Skool_” has the unique id marked in yellow:

 ![IMG_9545](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/d/b/dbb6fb2db1acb4c5f82d94b06b7f629d61fede10.jpeg)

In order to directly play that favourite, you need to create the following GET command:

**GET http://[Naim.ip.address]:15081/favourites/[code]?cmd=play**

In my example, to directly play the favourite playlist “_Old Skool_” this would be:

 ![IMG_9547](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/0/a/0a25aa606f8eb5eb9a854d743063cca139bdc3f9.jpeg)

Hope this helps.

---

<div class="post-metadata">

### Author: ![rln1965](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/rln1965/32/28288_2.png) [@rln1965](https://community.homey.app/u/rln1965)
#### Post date: [August 5, 2025, 12:09pm UTC](https://community.homey.app/t/control-naim-uniti-or-naim-mu-so-via-ip-command-flows/111904/9 "2025-08-05T12:09:20Z")

</div>

It all works I programmed al 5 presets ; ) Thanks for your help!
