Mutara

Frequently asked questions

Short answers to frequent questions. The first group is about using a node. The second group is about how Mutara works.

Using Mutara #

What is Mutara?

Mutara is a radio linking node with a web dashboard. It links with AllStarLink nodes over IAX2. It can use a USB radio interface, or run as an internet hub with no radio. You listen and talk in the browser, or in the app for iPhone, iPad or Android.

How is Mutara different from DroidStar or QSO One?

DroidStar and QSO One are apps that you install on a phone or a computer. The app connects that device to a network, and you use it on that device. For their features, read their own documentation.

Mutara uses a different model: a server with light clients.

  • The node runs all the time on your own hardware, such as a Raspberry Pi or a Linux computer, or on a cloud server.
  • The node does the links, the codecs, the radio, the timers, the station ID and the announcements.
  • The browser and the apps carry only the voice (Opus) and the controls.
  • Many people share one node with their own accounts and groups.
  • The links continue when your phone sleeps or loses its signal.

The two models have different uses. An app on one device needs no server. A Mutara node needs a computer that runs all the time, and it serves many users. Read Server and clients.

What hardware do I need?

A Raspberry Pi 4 with Raspberry Pi OS Lite. Other Raspberry Pi models (3, 5, Zero 2 W) and a Linux computer with Debian or Ubuntu also run Mutara. They are less tested in the beta. For an RF node, add a USB radio interface with a CM108 or CM119 chip, or an AIOC, and a radio. Read Get started.

Do I need a radio?

No. Without a radio, Mutara is an internet hub. You can add a radio later. Read Connect a radio.

How do I get Mutara?

Mutara is in an experimental beta. The beta guide gives beta testers the install command. There is no account to make with the Mutara project.

Can I try Mutara on my ASL3 node and go back?

Yes. The installer copies the ASL3 settings and does not change the ASL3 files. One command switches back to ASL3. Read Move from ASL3.

Can I use my phone?

Yes. Open the dashboard in the browser of the phone. To talk, use the https:// address. Or use the Mutara app for iPhone, iPad or Android. Read Is there an app for my phone or tablet?

Is there an app for my phone or tablet?

Yes. The Mutara app for iPhone and iPad and the Mutara app for Android connect to your own node. Listen with the screen off, hold or tap the talk button to talk, link nodes, scan your modules, play recorded clips, talk in rooms, and make and share bundles. Voice boost makes the voices louder on the phone only. The iPad app also runs on a Mac with Apple silicon.

The iPhone, iPad and Android apps are in internal testing now.

The apps are clients. They do not run a node. Read iPhone and iPad app and Android app.

Why does the talk button need HTTPS?

Browsers let a web page use the microphone only over HTTPS. The node makes its own certificate. The browser shows a warning one time. For a certificate with no warning, read Use HTTPS.

Can I use DVSwitch Mobile or iaxRpt?

Yes. An admin adds an IAX user on the Access page. The app signs in with that user name and secret. By default, an app user can talk but cannot send DTMF commands.

Can a club share one node?

Yes. Each person has an account. The admin puts the accounts in groups, for example a club and its net control, and selects on each node what each group may do: listen, talk, talk on the local radio, link, chat or save clips. The dashboard shows who talks now.

Can one install run several nodes?

Yes. One install runs several modules. A module is an AllStar node, a YSF module, a DMR module, an M17 module or a room. The on-air modules link to each other inside Mutara. A room is never on the air, and nothing links to it. Read Nodes and modules.

What is a room?

A room is a push-to-talk room for the users of your install, for example net control or an event team. Only the members of the room hear you. The radio and the links never hear it. Each room has its own members, chat, clips and access. A manager can stop or interrupt a talker. Read Rooms.

Can I keep a recording, a log or a transcript of a net?

Yes. Make a bundle from the clips of the net. A bundle is one recording with chapters, a net log and a transcript. It stays after the clips are gone. Download it as a zip, or share it with a link for 1, 7 or 30 days. The transcript needs a voice server with speech to text, and it can have errors. Read Bundles and transcripts.

How do I add or remove a module?

An admin opens Settings, then Modules. Under Add module, select the type on a card, type the values and click the add button. To remove a module, click Remove. The other modules keep running and keep their links. Mutara keeps the clips, chat and favorites of a removed module in modules/.removed. Read Add a module.

Can Mutara connect to a YSF reflector?

Yes. A YSF module is a client of one YSF reflector. Users listen and talk on the page of the module. An AllStar node of the same install can also link to the module with its local number, for example *32350. The module needs a transcoder server for the voice. Read Use a YSF module.

Why does the talk button say "Reflector busy"?

A YSF reflector takes one talker at a time. While a station talks on the reflector, and for 1 second after, you cannot talk on the YSF module. Audio from a linked node that starts then does not go to the reflector. The AllStar node stays full duplex: its radio and its links hear each other at all times. Read The reflector is half duplex.

Why does a YSF module sound louder or quieter than the reflector?

The module levels the audio from the reflector to an average of −25 dBFS, with peaks below −6 dBFS. Your audio goes into the vocoder at a fixed level, −9 dB from the AllStar level. An admin can turn auto level off and set a fixed gain, change the most boost, or change the vocoder level, on the YSF reflector page of Settings. Read Audio levels.

Can Mutara connect to an M17 reflector?

Yes. An M17 module links to one module (A to Z) of an M17 reflector. It needs no login and no password. It listens until an admin turns on talk. The module needs a transcoder server for the voice. Read Use an M17 module.

Known issue: on a urfd reflector, urfd can drop a stream from an M17 client that sends the destination M17-<reflector> <module>, for example the QSO One app. Then the module does not hear that client. A fix for urfd is in progress. Your streams to the reflector are not affected.

Can I see the names of DMR talkers?

Yes. An admin turns on Download the DMR ID list on the page of a DMR module in Settings. The node then downloads the RadioID.net list each day. Activity, Last heard and the clips show the callsign and the first name, for example W1AW John (DMR). The list is off by default. Read dmr_db.

The reflector hears me too quiet or too loud. What do I do?

A YSF, DMR or M17 module sends your audio into the vocoder at a fixed level: TX AGC off and −9 dB. When you stop talking, the activity log shows the level that went into the vocoder. An admin can change Vocoder level on the page of the module in Settings. Read Audio levels.

Can I hear all my nodes on one connection?

Yes. Click Scan on a dashboard or on the All nodes page. The node plays the active module, one module at a time. After a module stops, the scan stays on it for the hang time, 2 to 30 seconds. Read Scan.

How does scan priority work?

Each module has a priority from 0 to 99. 0 is no priority. A module with a higher priority takes the scan at once, also in the middle of a transmission. A module with the same or a lower priority waits. The admin sets the default of each module, and each user can set an own value. Both are in the Scan priorities panel. It opens from the button next to Scan in the top bar, also when the scan is off. The node keeps it, so the dashboard and the app use the same values. While you talk back, the scan does not move, and a higher module shows as waiting. Read Set the priority of a module.

What are missed clips?

While the scan plays one module, you do not hear the others. On the All nodes page and in the scan view, a clip that the scan did not play has a Missed mark. The clips of a module that you skipped are in a separate group, Skipped. When you play a clip, the mark goes away. The browser keeps the marks for one scan session. Read Find the clips that you missed.

Does the node speak weather alerts outside the United States?

No. The weather alerts come from weather.gov, which covers the United States only. They also need a voice server.

Does Mutara support digital modes?

Mutara links over AllStarLink (IAX2). A YSF module links to a YSF reflector. A DMR module logs in to a DMR master and listens to one talkgroup. An M17 module links to one module of an M17 reflector. An admin can turn on talk on a DMR or M17 module. P25 modules come later.

Mutara does not have the AMBE+2 codec or the Codec2 codec. A transcoder server (tcdpool) converts the digital voice. That server is a separate program with C/C++ parts, outside the node. The source of the transcoder server and its build and setup steps are in the mutara-radio/tcdpool project on GitHub. If you use the server of someone else, the operator of the server gives you an address and a key.

How Mutara works #

What is Mutara built with?

Mutara is one Go program. It does not use Asterisk. It has its own IAX2 engine. The Linux amd64 and arm64 releases and the apps use the libopus C library for Opus, linked into the program. Only the armv7 and armv6 releases and a plain go build use the same libopus code, translated to Go by a tool. The node program needs no system libraries to run. The Go part of the apps is built with a C toolchain: the Android NDK for Android, and Xcode for iPhone and iPad. Read Architecture.

What audio formats does Mutara use?

The mixer and the radio filters work at 48 kHz in 20 ms frames. AllStar links and IAX2 users use 8 kHz μ-law. YSF, DMR and M17 modules use 8 kHz audio to the transcoder. Browsers and the apps use 48 kHz Opus with in-band error correction (FEC): 24 kb/s for a node, and 32 kb/s for a room. Read Audio, timers and levels.

Does listener audio use a lot of CPU on a Raspberry Pi?

The Opus encoders for browsers and apps are the largest audio work. Listeners who hear the same audio share one encode. In auto, the default, the node also lowers the encoder level when the CPU is busy, and raises it again when the CPU has room. The dashboard shows the level as Encoder, for example 3 of 4. If listeners hear stutter on a slow board, set a lower fixed level. Read Listener encoder levels.

Can I edit the configuration file?

Yes. The file is YAML, usually /etc/mutara/mutara.yaml. Run mutara -check-config after an edit. A save from Settings writes the file again, so comments in it are lost. Read Configuration file.

Can I keep passwords out of the configuration file?

Yes. Each secret can come from the environment, {env: NAME}, or from a file, {file: /path}. Dashboard passwords written in the file change into bcrypt hashes at the next save.

How does Mutara check an update?

Each release has an ed25519 signature over its checksums. The service checks it, and a root job checks it again before it runs the installer. If the new release does not start, the installer puts the old one back. Read Signed updates.

Which servers does the node contact?
  • AllStarLink: registration, DNS lookup, the node list and statistics, when they are on.
  • The Mutara website, to look for releases. update.check: false turns this off.
  • api.weather.gov, when weather alerts are on. The request names Mutara and your callsign, as weather.gov asks.
  • Let's Encrypt, when you use it.
  • Your voice server, if you set it. For a transcript, the node sends it the audio of the clips.
  • The YSF reflector of each YSF module, the DMR master of each DMR module, the M17 reflector of each M17 module, and the transcoder server, if you set them.
  • radioid.net, once each day, when the DMR ID list is on.
Can I put the dashboard behind a reverse proxy?

Yes, after first-run setup. Setup works only on a direct connection from the same network. Make the admin account first.

Where are the logs?

In the systemd journal. Run journalctl -u mutara -f. The diagnostics file in Settings has the recent logs too. Read Files, logs and API.

Is there an API?

The recorded clips API, the bundles API and the event stream are documented for other programs. Other routes are for the dashboard and can change. Read Web API.