{
    "meta": {
        "lookup": "10450.14b9.1a0.fm.radiodns.org",
        "bearer": "fm:1a0.14b9.10450",
        "gcc": "1a0",
        "pi": "14b9",
        "mhz": 104.5,
        "station": {
            "call": "KBUN-FM",
            "pi": "14b9",
            "mhz": "104.50",
            "facility": "165994",
            "city": "BLACKDUCK",
            "state": "MN",
            "kind": "full-service"
        },
        "checked_at": "2026-10-20T21:13:59+00:00",
        "fqdn": "radiodns.hubbardradio.com",
        "name": "KBUN-FM"
    },
    "verdict": {
        "level": "fail",
        "headline": "1 problem found"
    },
    "counts": {
        "pass": 19,
        "warn": 8,
        "fail": 1,
        "info": 7
    },
    "sections": [
        {
            "title": "What is being checked",
            "steps": [
                {
                    "status": "info",
                    "title": "KBUN-FM - BLACKDUCK, MN",
                    "detail": "From the NRSC list: 104.50 MHz, PI code 14B9, FCC facility 165994.",
                    "fix": ""
                },
                {
                    "status": "info",
                    "title": "RadioDNS lookup name",
                    "detail": "10450.14b9.1a0.fm.radiodns.org  (frequency 104.50 MHz, PI 14B9, country code 1a0)",
                    "fix": ""
                }
            ],
            "extra": []
        },
        {
            "title": "1. RadioDNS registration",
            "steps": [
                {
                    "status": "pass",
                    "title": "Registered",
                    "detail": "10450.14b9.1a0.fm.radiodns.org points to the station's authoritative domain: radiodns.hubbardradio.com",
                    "fix": ""
                }
            ],
            "extra": []
        },
        {
            "title": "2. Service discovery (SRV records)",
            "steps": [
                {
                    "status": "pass",
                    "title": "_radiospi._tcp.radiodns.hubbardradio.com published",
                    "detail": "priority 10, weight 5, port 443 -> radiodns.hubbardradio.com  [target is an alias of dcmqfs8ti5c7m.cloudfront.net]",
                    "fix": ""
                },
                {
                    "status": "warn",
                    "title": "SRV target radiodns.hubbardradio.com is a CNAME alias",
                    "detail": "DNS rules (RFC 2782) say an SRV record should point at a name that has address records directly, not at an alias. Many resolvers cope, some do not.",
                    "fix": "Give radiodns.hubbardradio.com its own A/AAAA record (or point the SRV record at the real host name)."
                },
                {
                    "status": "pass",
                    "title": "_radioepg._tcp.radiodns.hubbardradio.com published",
                    "detail": "priority 10, weight 5, port 80 -> radiodns.hubbardradio.com  [target is an alias of dcmqfs8ti5c7m.cloudfront.net]",
                    "fix": ""
                },
                {
                    "status": "warn",
                    "title": "SRV target radiodns.hubbardradio.com is a CNAME alias",
                    "detail": "DNS rules (RFC 2782) say an SRV record should point at a name that has address records directly, not at an alias. Many resolvers cope, some do not.",
                    "fix": "Give radiodns.hubbardradio.com its own A/AAAA record (or point the SRV record at the real host name)."
                },
                {
                    "status": "info",
                    "title": "_radiovis._tcp: not published",
                    "detail": "Slideshow/visuals (STOMP) - optional, only needed for a live slideshow service.",
                    "fix": ""
                },
                {
                    "status": "info",
                    "title": "_radiopush._tcp: not published",
                    "detail": "Slideshow/visuals (Server-Sent Events) - optional, only needed for a live slideshow service.",
                    "fix": ""
                },
                {
                    "status": "info",
                    "title": "_radiovis-http._tcp: not published",
                    "detail": "Slideshow/visuals (HTTP) - optional, only needed for a live slideshow service.",
                    "fix": ""
                }
            ],
            "extra": []
        },
        {
            "title": "3. Service Information file (SI.xml)",
            "steps": [
                {
                    "status": "pass",
                    "title": "HTTPS endpoint https://radiodns.hubbardradio.com/radiodns/spi/3.1/SI.xml answered",
                    "detail": "148 ms, 174,831 bytes",
                    "fix": ""
                },
                {
                    "status": "pass",
                    "title": "The HTTPS certificate is valid",
                    "detail": "",
                    "fix": ""
                },
                {
                    "status": "pass",
                    "title": "Content type is application/xml",
                    "detail": "",
                    "fix": ""
                },
                {
                    "status": "warn",
                    "title": "SI file has no caching headers",
                    "detail": "",
                    "fix": "Add Cache-Control: max-age (for example 86400 for 24 hours). Without it, receivers guess - and some ignore the content."
                },
                {
                    "status": "warn",
                    "title": "The file does not strictly follow the official SI schema (3.1)",
                    "detail": "line 2: Element 'radiodns': This element is not expected. Expected is one of ( serviceGroupMember, ##other* ).\nline 2: Element 'radiodns': This element is not expected. Expected is one of ( serviceGroupMember, ##other* ).\nline 2: Element 'radiodns': This element is not expected. Expected is one of ( serviceGroupMember, ##other* ).\nline 2: Element 'radiodns': This element is not expected. Expected is one of ( serviceGroupMember, ##other* ).\nline 2: Element 'radiodns': This element is not expected. Expected is one of ( serviceGroupMember, ##other* ).\nline 2: Element 'radiodns': This element is not expected. Expected is one of ( serviceGroupMember, ##other* ).\nline 2: Element 'radiodns': This element is not expected. Expected is one of ( serviceGroupMember, ##other* ).\nline 2: Element 'radiodns': This element is not expected. Expected is one of ( serviceGroupMember, ##other* ).\nline 2: Element 'radiodns': This element is not expected. Expected is one of ( serviceGroupMember, ##other* ).\nline 2: Element 'radiodns': This element is not expected. Expected is one of ( serviceGroupMember, ##other* ).\nline 2: Element 'radiodns': This element is not expected. Expected is one of ( serviceGroupMember, ##other* ).\nline 2: Element 'radiodns': This element is not expected. Expected is one of ( serviceGroupMember, ##other* ).\n(62 more not shown)",
                    "fix": "Many receivers are forgiving, but strict ones may ignore a file that does not match the schema. RadioDNS's SI tool (si.radiodns.org) can rebuild a correct file."
                },
                {
                    "status": "pass",
                    "title": "HTTP endpoint http://radiodns.hubbardradio.com/radiodns/spi/3.1/SI.xml answered",
                    "detail": "109 ms, 174,831 bytes",
                    "fix": ""
                },
                {
                    "status": "pass",
                    "title": "Content type is application/xml",
                    "detail": "",
                    "fix": ""
                },
                {
                    "status": "warn",
                    "title": "SI file has no caching headers",
                    "detail": "",
                    "fix": "Add Cache-Control: max-age (for example 86400 for 24 hours). Without it, receivers guess - and some ignore the content."
                },
                {
                    "status": "warn",
                    "title": "The file does not strictly follow the official SI schema (3.1)",
                    "detail": "line 2: Element 'radiodns': This element is not expected. Expected is one of ( serviceGroupMember, ##other* ).\nline 2: Element 'radiodns': This element is not expected. Expected is one of ( serviceGroupMember, ##other* ).\nline 2: Element 'radiodns': This element is not expected. Expected is one of ( serviceGroupMember, ##other* ).\nline 2: Element 'radiodns': This element is not expected. Expected is one of ( serviceGroupMember, ##other* ).\nline 2: Element 'radiodns': This element is not expected. Expected is one of ( serviceGroupMember, ##other* ).\nline 2: Element 'radiodns': This element is not expected. Expected is one of ( serviceGroupMember, ##other* ).\nline 2: Element 'radiodns': This element is not expected. Expected is one of ( serviceGroupMember, ##other* ).\nline 2: Element 'radiodns': This element is not expected. Expected is one of ( serviceGroupMember, ##other* ).\nline 2: Element 'radiodns': This element is not expected. Expected is one of ( serviceGroupMember, ##other* ).\nline 2: Element 'radiodns': This element is not expected. Expected is one of ( serviceGroupMember, ##other* ).\nline 2: Element 'radiodns': This element is not expected. Expected is one of ( serviceGroupMember, ##other* ).\nline 2: Element 'radiodns': This element is not expected. Expected is one of ( serviceGroupMember, ##other* ).\n(62 more not shown)",
                    "fix": "Many receivers are forgiving, but strict ones may ignore a file that does not match the schema. RadioDNS's SI tool (si.radiodns.org) can rebuild a correct file."
                }
            ],
            "extra": {
                "links": [
                    [
                        "Make an SI file accessible (PDF)",
                        "https://radiodns.org/wp-content/uploads/2014/02/HOWTO-MakeSIandXSIfilesaccessibletoRadioDNSHybridRadiodevices.pdf"
                    ],
                    [
                        "Build an SI file with RadioDNS's tool",
                        "https://si.radiodns.org/"
                    ]
                ]
            }
        },
        {
            "title": "4. Your station in the file",
            "steps": [
                {
                    "status": "info",
                    "title": "74 services in the file",
                    "detail": "",
                    "fix": ""
                },
                {
                    "status": "pass",
                    "title": "Station found: KBUN-FM",
                    "detail": "Matched on bearer fm:1a0.14b9.10450",
                    "fix": ""
                },
                {
                    "status": "pass",
                    "title": "Short name: KBUN-FM",
                    "detail": "",
                    "fix": ""
                },
                {
                    "status": "pass",
                    "title": "Medium name: KBUN-FM",
                    "detail": "",
                    "fix": ""
                },
                {
                    "status": "pass",
                    "title": "Long name: KBUN-FM",
                    "detail": "",
                    "fix": ""
                },
                {
                    "status": "pass",
                    "title": "Short description present",
                    "detail": "Lumberjack Radio Network",
                    "fix": ""
                },
                {
                    "status": "pass",
                    "title": "Long description present",
                    "detail": "Lumberjack Radio Network",
                    "fix": ""
                },
                {
                    "status": "pass",
                    "title": "Keywords present",
                    "detail": "KBUN, KBUN-FM, Lumberjacks, Bemidji",
                    "fix": ""
                },
                {
                    "status": "pass",
                    "title": "1 link",
                    "detail": "Homepage https://kbunsportsradio.com/",
                    "fix": ""
                },
                {
                    "status": "pass",
                    "title": "The <radiodns> element matches the registration",
                    "detail": "fqdn radiodns.hubbardradio.com, service identifier nmnkbunfm42",
                    "fix": ""
                }
            ],
            "extra": []
        },
        {
            "title": "5. Logos",
            "steps": [
                {
                    "status": "warn",
                    "title": "Not all five standard logo sizes are listed",
                    "detail": "Missing: 32x32, 112x32",
                    "fix": "RadioDNS asks for either no logos or at least the five standard sizes, so every receiver finds one that fits."
                },
                {
                    "status": "fail",
                    "title": "5 of 5 logos have problems",
                    "detail": "See the table below.",
                    "fix": "Every logo URL must return a real PNG or JPEG of the declared size."
                }
            ],
            "extra": {
                "logos": [
                    {
                        "url": "https://radiodns.hubbardradio.com/radiodns/spi/3.1/radiodns/spi/3.1/img/62ad5eb6d498c59b51c66ece513c0ae1.jpg",
                        "declared": "600x600",
                        "actual": "",
                        "bytes": 0,
                        "ok": false,
                        "note": "HTTP 404",
                        "preview": null
                    },
                    {
                        "url": "https://radiodns.hubbardradio.com/radiodns/spi/3.1/radiodns/spi/3.1/img/8750333995271387df07a85a4b25eff3.jpg",
                        "declared": "320x240",
                        "actual": "",
                        "bytes": 0,
                        "ok": false,
                        "note": "HTTP 404",
                        "preview": null
                    },
                    {
                        "url": "https://radiodns.hubbardradio.com/radiodns/spi/3.1/radiodns/spi/3.1/img/5d5a2fb2001e8f33e9495b71eeaec634.jpg",
                        "declared": "128x128",
                        "actual": "",
                        "bytes": 0,
                        "ok": false,
                        "note": "HTTP 404",
                        "preview": null
                    },
                    {
                        "url": "https://radiodns.hubbardradio.com/radiodns/spi/3.1/radiodns/spi/3.1/img/72ecfa219e71395f2d55d81e2857c1d7.jpg",
                        "declared": "?",
                        "actual": "",
                        "bytes": 0,
                        "ok": false,
                        "note": "HTTP 404",
                        "preview": null
                    },
                    {
                        "url": "https://radiodns.hubbardradio.com/radiodns/spi/3.1/radiodns/spi/3.1/img/f38385bb0c434a5ee0777433a3d3c682.jpg",
                        "declared": "?",
                        "actual": "",
                        "bytes": 0,
                        "ok": false,
                        "note": "HTTP 404",
                        "preview": null
                    }
                ]
            }
        },
        {
            "title": "6. Transmitters and streams",
            "steps": [
                {
                    "status": "pass",
                    "title": "FM bearer fm:1a0.14b9.10450",
                    "detail": "cost 10, offset 0 ms",
                    "fix": ""
                },
                {
                    "status": "info",
                    "title": "Other bearer: hd:292.2886a",
                    "detail": "Not checked by this tool.",
                    "fix": ""
                },
                {
                    "status": "warn",
                    "title": "Stream OK: https://playerservices.streamtheworld.com/api/livestream-redirect/KBUNFMAAC.aac?dist=hubbard&source=hubbard-web&ttag=radiodns",
                    "detail": "audio/aacp, 64 kbps, offset 25000 ms\nThe file says audio/aac but the stream answers audio/aacp.",
                    "fix": ""
                },
                {
                    "status": "pass",
                    "title": "Stream OK: https://playerservices.streamtheworld.com/api/livestream-redirect/KBUNFM.mp3?dist=hubbard&source=hubbard-web&ttag=radiodns",
                    "detail": "audio/mpeg, 96 kbps, offset 25000 ms",
                    "fix": ""
                }
            ],
            "extra": []
        }
    ]
}