Airtime 2.1.3 fixes improve playout, widget and stream performance
  • Airtime 2.1.3 has been released with a number of fixes improving performance of the playout engine, jQuery widgets and streams. This is the third hotfix driven and tested by great feedback from you all. Thanks for all your help!

    Follow these guides to either install or upgrade. Deb packages are uploaded...

    Here are this release’s headlines:
    • Fixed playout engine occasionally quitting after changes to Stream Settings page
    • Fixed jQuery widgets not showing the incorrectly showing the past Sunday on Sunday
    • Fixed dragging and dropping tracks into a live show, which could cause to web UI to become unsynchronized from what is actually playing
    • Fixed unable to receive mono streams for Master or Show source rebroadcasts
    • Fixed Soundcloud uploads not working for some users
    Happy broadcasting! Please open separate threads for bug reports!

    Adam and the team
  • 27 Comments sorted by
  • We're blaming any issues on Friday 13th by the way... ;)
  • doesn t work easy setup !
  • Vote Up0Vote Down GigaGiga
    Posts: 80Member

    Thanks for the great work, need to mention that I've a custom port for the airtime installation, so after apt-get update/upgrade the apache site for airtime were restored to port 80, so had to change it back,  and same about icecast config file, were restored to the first time configs ( passwords/stream address ) as mentioned before:

    hope this would save time for someone.


  • Vote Up0Vote Down Albert FRAlbert FR
    Posts: 1,978Member, Airtime Moderator

    I've modified my ls_script to have music between shows, but for some reasons I really don't understand sometimes when I have empties shows the music doesn't came back...
    no really logs informations

    any ideas ?

    my ls_script modifications :

    #default = amplify(0.00001, noise())
    #default = rewrite_metadata([("artist","Airtime"), ("title", "offline")],default)

    music = playlist(mode='randomize',reload=1,reload_mode="rounds", "/srv/random/music")
    #jingles = playlist(mode='randomize',reload=1,reload_mode="rounds", "/srv/random/jingles")
    extraits = playlist(mode='randomize',reload=1,reload_mode="rounds", "/srv/random/extraits")
    default = rotate(weights=[5,1], [music,extraits])

    s = fallback(track_sensitive=false, [queue, default])

    Post edited by Albert FR at 2012-07-16 05:46:52
  • Take a look through


    It should tell you when it is switching from queue to default, and if there are any failures.
    Airtime Pro Hosting:
  • Vote Up0Vote Down Albert FRAlbert FR
    Posts: 1,978Member, Airtime Moderator
    no errors on it...
  • Does it say anything specifically? It should at least notify that it is switching to a new source.
    Airtime Pro Hosting:
  • Vote Up0Vote Down Albert FRAlbert FR
    Posts: 1,978Member, Airtime Moderator
  • Vote Up0Vote Down Albert FRAlbert FR
    Posts: 1,978Member, Airtime Moderator
    another thing
    I'll do a new install (on a new server) of airtime (latest version)
    I want to use it with nginx
    have you some recommendations before I'm starting ?

  • I have a fresh install of airtime 2.1.3 and everything seems OK... however live input streams are not working... at least I cannot connect mixxx to the server. I suppose the new feature creates a new mount point on icecast, but it does not seem work.

    Is this feature already working?
    Could it be something I need to configure (besides the System->Streams settings?

  • Hi Plinio,

    What's your configuration on stream setting page?

    Have you had a chance to check out the manual?


  • Yes I saw the manual and set it up.  The strange thing is that the ports do seem to open up upon configuring, because I get a response when telneting to them, however the clients time out when authenticating. So it kind of tries to work.

     If I create the mount points by hand on icecast  clients can connect but airtime does not allow the use of the port as it finds it already in use by icecast. This is why I dont consider it to be a firewall issue.

    I also tried to get icecast to listen on those ports (8008 && 8009 for master and show) but they did not work. I even uninstalled and reinstalled icecast and airtime in case it was an upgrade issue. 

  • Hi Plinio,

    Can you also post the screenshot of Mixx configuration? I don't see anything wrong with your configuration of airtime setting.

  • Sure... dont I need to have something configured in icecast?
    Post edited by Plinio Barraza at 2012-09-20 13:23:03
  • Vote Up0Vote Down Albert FRAlbert FR
    Posts: 1,978Member, Airtime Moderator
    one thing, I see you are on Os X, if you using mixxx, attention mp3 is not compiled inside the app.
    try in ogg :)
  • No luck... also it will not work in Butt or LadioCast... By the way... I am not on the local machine... the idea is to stream remotely. The connection seems to work when telneting on the local machine running airtime... from the remote machine telneting to the port times out without connecting. But I don´t think it is a firewall issue because if I open a port with icecast it works fine.

    OK... it is a fact.. I installed ezstream on the server and it works OK... is it not possible to do remotely?
  • No, live input connects to Liquidsoap(Airtime) directly.
  • Thanx for your response James.  That's a bit disappointing...  Remote streaming into airtime would be great... in my case the server is in a data center, so I cannot put the studio on the server.  Do you know of any way to make this possible... The (Liquidsoap)Airtime uses a TCP/IP socket to receive the stream, how come it will not accept remote connections...

    I guess the work around would be to do this the old way ... having the Airtime stream as a fallback for the an icecast mount point. The documentation seems to imply I can connect an external stream though.

    Any ideas?
    Thank you for taking time with my questions. Airtime is awesome.

    Post edited by Plinio Barraza at 2012-09-21 16:16:49
  • Liquidsoap acts as a simple Icecast server when you set up a master source. Any data directed to Liquidsoap is then redirected to icecast.

    I'm not sure why exactly Mixxx won't connect to this port since as you said it is responding to telnet. Are there any logs from Mixxx that you can look at?
    Airtime Pro Hosting:
  • Plinio,
    Add a forward slash in front of "livelucy1" in the mount settings for Mixxx, like this - /livelucy1 - that's working for me. That will also allow Butt and LadioCast to connect. I had recently tried both and couldn't connect, so I just went back and checked their settings and found that the "/" was missing. I added it and all connect now.

    You may also already know, mp3 streaming can be activated in Mixxx by downloading LAME.

  • Reply to @Martin+Konecny:
     Thank you Martin... No program  (neither Mixxx, Butt or LadioCast work, and I even tried from another server using Ezstream). Logs just say check username and password. I cannot telnet to the port remotely... it times out...

    I am pretty sure Liquidsoap is denying the remote connection because once I installed Ezstream on the same machine running Airtime it worked like a charm...

    I checked ls_script.liq and found a line: set("harbor.bind_addr", ""), which would imply accepting on all IPs from all IPs... so I tried to create my own Liquidsoap harbor with the following script


    set("log.file.path", "/var/log/liquidsoap/log.log")
    live = input.harbor("test",port=8010,user='test',password='test')
    radio = fallback(track_sensitive=false,[live,sine()])
    output.icecast(%vorbis, host = "localhost", port = 8000,password = "xxx", mount = "basic",radio)


    And voila my test Liquidsoap harbor works perfectly form remote clients... so it is definitely something in the way Airtime is creating the harbor.  Is there any way this can be overridden? Should I try to mess around with the scripts? I would prefer not to.

    Finally, the ls_script.log shows no activity from remote attempts.

    (BTW: Thanks Gary, but the slash does not seem to be the issue.)
    Post edited by Plinio Barraza at 2012-09-25 00:30:42
  • Hi Plinio,

    If it worked with the script that you wrote, it should work with airtime as well. The only thing the airtime does extra is simple user/pass checking against DB. Does everything else work with LS?(eg. streaming audio and etc).

    Can you also check the raw db data? check live_stream_master_username and live_stream_master_password on cc_pref table and see if it matches with what you put on Mixx.

    Thank you.

  • @Plinio, have you resolved your issue?
  • Reply to @James+Moon:
    Thank you James. I have not been able to fix it.  I was able to test on the LAN of the server and I managed to connect. This issue only presents itself when I try to stream over the Internet.

    I can however stream to Liquidsoap over the internet if I open my own harbor. I don't see why it should differ, but it does.

    Could it be this? I found this on the FAQ in Sourcefabric:
    Post edited by Plinio Barraza at 2012-10-02 20:19:59
  • OK.. I started hacking at ls_script.liq and managed to make things work.. but not ideally.  What I did was to replace the web_stream_source with a harbor and it works !!  I can connect with Mixxx over the internet and airtime falls back to this new source. However it is not ideal because it circumvents Airtime's nice source selector in the UI. 

    I added this code:

    web_stream_source = input.harbor("test",port=8010,user="test",password="test")
    output.dummy(fallible=true, web_stream_source)
    s = switch(track_sensitive = false,
          ({ !web_stream_enabled }, web_stream_source),
          ({ true }, s)

  • Hi Plinio,

    are you connecting to port 8010? I don't see how that resolves the problem. :(
  • Reply to @James+Moon:
    Hi James...
    No, the port is not important here. What I did was hack the script to add another switch to the stream sources of the Liquidsoap script, thereby bypassing Airtime's authentication (as you can see in this harbor the username and password are hard coded), and voila... it works and allows connections from the internet.  If no other stream or programmed content is present Airtime falls back to this stream... 

    What this tells me is that something in the way Airtime authenticates the stream source limits connections to the local network.... probably on purpose...

    I will look more into the Postgresql authentication to see why the harbor seems to close up to connections from the internet...

    In the end I think I found a path to fix my issue, but I really would prefer not to have to hack the Liquidsoap script as it will probably break on an upgrade. Ideally there would be a configuration variable that would allow users to define which networks to allow incoming streams to Airtime.

    I hope this is all clear... If you like I can post the complete code of the script so you may understand my thought process.... again, thank you for taking the time and attention.