op25 Alpha Tags

mackross

Newbie
Joined
Dec 25, 2024
Messages
2
Hi everyone

Sorry if this has been brought up before, Ive searched but everything I've tried has not worked.
Ive had boatbod's op25 working quiet well with a rtl-sdr v3, however I have not been able to get the alpha tags working.
i have tried changing the file with a text editor and libreoffice calc.
in libre office cal the first colum has the DEC/TGID, second column has the alpha tag I'd like and third column has the priority from 1-3 (I have tried without the third column aswell).
trying in text editor:
TGID<tab>alpha-tag<tab>priority.
I have also tried:
"TGID"<tab>"alpha-tag"<tab>"priority"
the alpha tag file name is "sescfs.tsv" and is listed as such in the trunk.tsv file.
My whitelist file works fine though.

Any help would be greatly appreciated!
Thank you.
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,500
Location
Talbot Co, MD
Hi everyone

Sorry if this has been brought up before, Ive searched but everything I've tried has not worked.
Ive had boatbod's op25 working quiet well with a rtl-sdr v3, however I have not been able to get the alpha tags working.
i have tried changing the file with a text editor and libreoffice calc.
in libre office cal the first colum has the DEC/TGID, second column has the alpha tag I'd like and third column has the priority from 1-3 (I have tried without the third column aswell).
trying in text editor:
TGID<tab>alpha-tag<tab>priority.
I have also tried:
"TGID"<tab>"alpha-tag"<tab>"priority"
the alpha tag file name is "sescfs.tsv" and is listed as such in the trunk.tsv file.
My whitelist file works fine though.

Any help would be greatly appreciated!
Thank you.
The trunk tags file has tab-separated fields, and it needs to have Linux line terminations. Use the dos2unix command on it if you're not sure.
I have attached an example of a known good file that contains tgids, tags, and some priorities. (Look at 11501 for example)
 

Attachments

  • first-tags.zip
    3.3 KB · Views: 29

mackross

Newbie
Joined
Dec 25, 2024
Messages
2
The trunk tags file has tab-separated fields, and it needs to have Linux line terminations. Use the dos2unix command on it if you're not sure.
I have attached an example of a known good file that contains tgids, tags, and some priorities. (Look at 11501 for example)
Thanks Boatbod!
Used your file and edited it and all alphatags are working perfectly now.. not sure what i was doing wrong, as the files look the same but oh well it works!
 

jegallag

Member
Feed Provider
Joined
Feb 27, 2005
Messages
36
Location
Bel Air, MD
I have several versions of OP25 running on several Pis. What I see the alpha tags when viewing the web interface for Op25 on port 8080. What do I need to do in order to send the Alpha tags to RadioReference? I assume it is something simple, but I have never been able to figure that out.
FYI, I am running the latest RR version of the Pi software.
Any help would be greatly appreciated.
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,102
Location
NE Wisconsin
What do I need to do in order to send the Alpha tags to RadioReference?

The answer varies in accordance with the op25 repo and specific application within that repo.
(1) Osmocom op25 doesn't support the transmission of metadata.

(2) Boatbod (rx.py) Add -M meta.json to your rx.py command line. Edit meta.json to populate the IP address, and port of the
server, assigned mount point, and password of the BCFY or Icecast server.

(3) Boatbod (multi_rx.py) Edit the metadata section of your JSON file to populate the same information as outlined in (2) above.
Be sure that the "stream_name" label (text) matches the label of the "meta_stream_name" label of the associated voice channel.
 

jegallag

Member
Feed Provider
Joined
Feb 27, 2005
Messages
36
Location
Bel Air, MD
I made the change to the meta.json file and the op25.sh startup command. From the attached file, it appears that everything is working, but I am not seeing the TG information populating on ScannerRadio or RadioReference when listening. The TGs do show up on the OP25 web monitoring screen.
Any thoughts?
 

Attachments

  • op25-Startup.txt
    1.6 KB · Views: 7

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,102
Location
NE Wisconsin
FYI, I am using the Broadcastify image on a RaspberryPi to broadcast to Broadcastify.

Indeed, there's no metadata going to your BCFY feed. I am not familiar with BCFY's Pi Image or how you have your particular
feed configured. I don't use their image but instead configure op25 to supply my streams directly using Liquidsoap.

You'd need to post your configs and so forth before myself or anyone else could assist any further. Be sure to redact assigned
feed credentials before posting your configs.
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,500
Location
Talbot Co, MD
Indeed, there's no metadata going to your BCFY feed. I am not familiar with BCFY's Pi Image or how you have your particular
feed configured. I don't use their image but instead configure op25 to supply my streams directly using Liquidsoap.

You'd need to post your configs and so forth before myself or anyone else could assist any further. Be sure to redact assigned
feed credentials before posting your configs.
Metadata cannot be sent unless the icecast stream is up. From the look of your log, you have the metadata configured, but possibly not the audio (your internal audio player is active). Are you using liquidsoap to connect op25 to broadcastify?
Code:
using ALSA sound system
audio device: plughw:1,0
Listening on 127.0.0.1:23456

If you increase the log level to -v 11 we can explore a little deeper and see what's going on under the hood.
 

jegallag

Member
Feed Provider
Joined
Feb 27, 2005
Messages
36
Location
Bel Air, MD
No, I am using the Broadcastify app on the Broadcastify image, which is using DarkIce. The audio is working fine, it is a Pi5 with a USB Audio dongle. Audio out in through the dongle.
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,102
Location
NE Wisconsin
No, I am using the Broadcastify app on the Broadcastify image, which is using DarkIce. The audio is working fine, it is a Pi5 with a USB Audio dongle. Audio out in through the dongle.
We understand all of that. "IF" the BCFY image packages the boatbod repo, then you must have a functional tag file in addition to
setting up icemeta.py (configs) to transmit the metadata (tags) to BCFY. Increase log level to -v 11 as suggested by @boatbod and
allow op25 to run long enough to capture trunk tracking of the groups you're feeding to BCFY, then post that logfile.

Make a screen capture of the op25 console while tracking a active Talkgroup and post that too. It would be easier to render the
assistance you seek if you were to follow what was asked for in Post #8.
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,500
Location
Talbot Co, MD
We understand all of that. "IF" the BCFY image packages the boatbod repo, then you must have a functional tag file in addition to
setting up icemeta.py (configs) to transmit the metadata (tags) to BCFY. Increase log level to -v 11 as suggested by @boatbod and
allow op25 to run long enough to capture trunk tracking of the groups you're feeding to BCFY, then post that logfile.

Make a screen capture of the op25 console while tracking a active Talkgroup and post that too. It would be easier to render the
assistance you seek if you were to follow what was asked for in Post #8.
Log level 11 will capture the HTTP requests being sent to the Icecast server, as well as the responses, which we hope are "200" ok's.
 

jegallag

Member
Feed Provider
Joined
Feb 27, 2005
Messages
36
Location
Bel Air, MD
Attached is a sample of the log file that includes active transmission.
 

Attachments

  • OP25-Log-File-03-24-2025.txt
    76.8 KB · Views: 2

boatbod

Member
Joined
Mar 3, 2007
Messages
3,500
Location
Talbot Co, MD
03/24/25 17:22:18.394142 metadata update: "http://audio1.broadcastify.com:80/a...o&song=[10512]+Fire+(Fire+and+Auto+Accidents)"
...
03/24/25 17:22:18.502825 metadata result: "401"
03/24/25 17:22:18.503083 meta_server::send_metadata(): metadata update error: 401

I believe HTTP 401 is an authorization error.
Did you correctly enter the mount user & password in meta.json (or whatever file you are using)?
Code:
{
    "icecastPass": "password",
    "icecastMountpoint": "mountpoint",
    "icecastServerAddress": "server.name:port",
    "delay": "0.0", "icecastMountExt": ".m3u",
    "meta_format_idle": "[idle]",
    "meta_format_tgid": "[%TGID%]",
    "meta_format_tag":  "[%TGID%] %TAG%",
    "meta_format_rid":  "@ [%RID%]"
}
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,102
Location
NE Wisconsin
Attached is a sample of the log file that includes active transmission.
Looking at your sample log, it appears you've entered the mountpoint string with a leading forward slash that's likely the issue.
I believe icemeta.py inserts this character into the string and is not required. Try reforming your mountpoint without the forward slash.

Examples

Code:
{
    "icecastPass": "hackme",
    "icecastMountpoint": "op25",
    "icecastServerAddress": "localhost:8000",
    "delay": "0.0", "icecastMountExt": ".m3u",
    "meta_format_idle": "[idle]",
    "meta_format_tgid": "[%TGID%]",
    "meta_format_tag":  "[%TGID%] %TAG%",
    "meta_format_rid":  "@ [%RID%]"
}


Code:
   "metadata": {
        "module": "icemeta.py",
        "streams": [
            {
                "stream_name": "stream_0",
                "meta_format_idle": "[Scanning]",
                "meta_format_tgid": "[%TGID%]",
                "meta_format_tag":  "[%TGID%] %TAG%",
                "icecastServerAddress": "localhost:8000",
                "icecastMountpoint": "op25",
                "icecastMountExt": ".xspf",
                "icecastPass": "hackme",
                "delay": 0.0
            }
        ]
 
Last edited:

jegallag

Member
Feed Provider
Joined
Feb 27, 2005
Messages
36
Location
Bel Air, MD
I cut and pasted from the BroadCastify Feed Tech Tab

"icecastPass": "xxxxxxxx",
"icecastMountpoint": "xxxxxxxxxxxxx",
"icecastServerAddress": "audio3.broadcastify.com:80",
"delay": "0.0", "icecastMountExt": ".m3u",
"meta_format_idle": "[idle]",
"meta_format_tgid": "[%TGID%]",
"meta_format_tag": "[%TGID%] %TAG%",
"meta_format_rid": "@ [%RID%]"
 

jegallag

Member
Feed Provider
Joined
Feb 27, 2005
Messages
36
Location
Bel Air, MD
I removed the / from the mount point. Attached is the log file after removing the /
 

Attachments

  • OP25-Log-File-03-25-2025.txt
    71.5 KB · Views: 2

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,102
Location
NE Wisconsin
I removed the / from the mount point. Attached is the log file after removing the /
You're getting there! (New log data) 03/25/25 11:53:22.652054 metadata result: "200"

However, I think you inadvertently copied the wrong BCFY server. In your current log, the tags are going to audio3.broadcastify.com
but in your earlier log, the failed tags were going to audio1.broadcastify.com.

Verify your assigned BCFY server for this feed as setup in Darkice and make your icemeta.py configuration match that server, and you
should be good to go. Don't forget to update BCFY that you're broadcasting tag information as well.

It might be best to recheck your BCFY feed details for the correct server assignment then make sure that both Darkice and your
icemeta.py configurations are using the same BCFY server.
 
Last edited:

jegallag

Member
Feed Provider
Joined
Feb 27, 2005
Messages
36
Location
Bel Air, MD
The audio1 and audio3 was my error. I am running two feeds and switched to the most active one, which uses audio3 for test purposes. All configuration appears correct. I have submitted a ticket to BCFY asking if they are seeing the alpha tags.
Thanks for the help eveyone.
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,102
Location
NE Wisconsin
The audio1 and audio3 was my error. I am running two feeds and switched to the most active one, which uses audio3 for test purposes. All configuration appears correct. I have submitted a ticket to BCFY asking if they are seeing the alpha tags.
Thanks for the help eveyone.
I see that 'Hartford County Fire and EMS Woking Incidents' is now fixed!
 
Top