This document gives you an overview of BigBlueButton 2.4.0, which was released on December 20, 2021.

    What’s new

    BigBlueButton 2.4 offers users improved usability, increased engagement, and more performance.

    • Usability - making common functions (such as raise hand) easier
    • Engagement - giving the instructor more ways to engage students
    • Performance - increasing overall performance and scalability

    Here’s a breakdown of what’s new in 2.4

    • Usability

      • Ability to extend the duration of ongoing breakout rooms
      • Ability to set the name of the breakout rooms as you create them
      • Reduced mirror effect when sharing screen
      • Improved view of external video sharing for viewers
      • Recording includes polling result
      • Moderator messages in the public chat are easier to distinguish
      • Webcam background blur
    • Engagement

      • Improved Layout Manager with focus on presentation vs focus on webcams
      • Presenter can set viewers’ layout
      • Hide voter’s name from moderators
      • Indicate who is sharing webcam
    • Performance

    This release, by design, does not introduce any large-scale UI changes. We designed it to be very familiar to users of BigBlueButton 2.3.

    Under the hood, BigBlueButton 2.4 installs on Ubuntu 18.04 64-bit, and the following key components have been updated

    • Node 14.x (LTS release of Node)
    • Meteor 2.5

    For full details on what is new in BigBlueButton 2.4, see the release notes. Recent releases:


    The following sections give details of the new features.


    Ability to extend the duration of ongoing breakout rooms

    As a moderator you can see the Extend button at the bottom of the Breakouts panel: Extend breakout

    Selecting it will display the controls to extend the breakouts time by five or minutes or longer. Extend breakout

    The time is added to all running breakout rooms. Extend breakout

    Ability to set the name of the breakout rooms as you create them

    When creating breakout rooms you can edit the name of each room Set name for breakout

    Set name for breakout

    Reduced mirror effect when sharing screen

    Up to and including BigBlueButton 2.3.x the HTML5 client would show mirror effect to the presenter when the presenter was sharing their entire window. This caused confusion and was often interpreted as a bug. Reduced mirror effect

    In BigBlueButton 2.4 we have introduced a simplified screen which informs the presenter of which window is shared, without creating mirror effect. Reduced mirror effect

    Improved view of external video sharing for viewers

    Viewers no longer see the progress bar of videos. There are custom volume control and custom refresh video buttons.

    External video - custom controls for volume and refresh

    Recording’s public chat includes polling result

    Meetings which included polling have improved poll results summary in the recording.

    Recording - polling result

    Meetings which included external video sharing (YouTube, Vimeo, etc) have links to the video resource in the recording’s public chat.

    Recording - external video

    Moderator messages in the public chat are easier to distinguish

    Chat messages sent by moderators stand out in the public chat, allowing to be distinguished easily. The emphasis is optional (settings.yml chat parameter moderatorChatEmphasized)

    Moderator bolded text

    Alerts when user leaves

    The Notifications section in Settings has a new option for audio/popup alert when a user leaves the session.

    User leaves alert

    Webcam background blur

    In the webcam preview window prior to sharing webcam you can select between several backgrounds (or no background blur)

    No blur (default) Background blur for webcam

    Replacing the background Background blur for webcam

    Blurring the background Background blur for webcam



    Improved Layout Manager

    Under Settings there is a new section of controls related to layout. A dropdown allows for the selection of one of: Smart Layout, Focus on presentation or Focus on webcams.

    Layout dropdown

    Focus on presentation - webcams are visible but more compact, allowing for the majority of the area to be reserved for the presentation. Focus on video has the reverse effect - the presentation is visible but on small area under the chat.


    Presenter can set viewers’ layout

    The presenter has an extra set of controls in the Settings modal. Aside from being able to set their own layout, there is an extra option to “push” that layout to the rest of the participants in the meeting.

    Pushing layout

    Learning Analytics Dashboard

    Moderators (teachers) are now able to view student participation and engagement throughout the session. The Learning Analytics Dashboard gives moderators a live view (updated every 10 seconds) of user metrics that include

    • When they joined the session
    • How long there have been in the session
    • Time talking
    • Time sharing their webcam
    • How many messages, emojis, and raise hand events they have done
    • current status (online/offline)
    • Response to all polls

    Teachers can use this dashboard to track engagement and learning (based on respose to polls) during the session to questions such as

    • Which students are participating in the session (and which are not)?
    • Based on the poll results, which students are learning (and which are not)?

    Teachers are automatically logged in as moderators when joining from their LMS. They can launch the Learning Analytics Dashboard by selecting “Learning Analytics Dashboard” under the gear icon.

    Learning Analytics Dashboard

    The screen shot below shows three (3) participants, two (2) polls, one raise hand, and overall activity score (calculated based on who is most active in talking, chatting, responding polls, using emojis, and raising hands).

    Learning Analytics Dashboard-2

    This screen shot shows each user’s response to polls. Note: Anonymous is for any poll that the instructors indicated would be anonymous and not track user’s responses.

    Learning Analytics Dashboard-3

    Hide voter’s name from moderators

    BigBlueButton 2.4 supports pseudo-anonymous polls - meaning polls for which the presenter/moderator is not informed about the voting option of the viewers. Server administrators (anyone with access to the BigBlueButton server) can still find information to connect the answer to the user. Big thanks to @tibroc and @schrd who sent pull requests for this feature!

    Set the poll to be “anonymous” when creating it: Anonymous poll

    Voters will see that it is anonymous: Anonymous poll

    The presenter will not know who voted what: Anonymous poll

    Indicate who is sharing webcam

    BigBlueButton 2.4 introduces an indicator for users who are sharing their webcam. This is particularly helpful when webcam pagination is enabled there is no way of knowing whose webcam you would see on the other “pages”.

    Anonymous poll



    This release also contains initial support for using mediasoup instead of Kurento for handling WebRTC video streams (webcams and screenshare) and listen only. See these steps for enabling mediasoup on your setup of 2.4-rc-2 (or later).

    For analysis on mediasoup vs. Kurento, see BigBlueButton World - BigBlueButton’s Media Stack and the Road Ahead.


    Note These features below are experimental and incomplete and should not be used for a production server. They are primarily included for developers testing new capabilities that many appear in subsequent releases to 2.4.

    Faster audio activation using fullaudio bridge (experimental)

    With BigBlueButton 2.4-rc-4 (or later) you can switch the way full audio (microphone) is handled on the backend. By default we use SipJS but we are working on connecting to Kurento (and later mediasoup) and then to FreeSWITCH rather than directly to FreeSWITCH. The result is a faster audio connection (because media server supports trickle ICE) and fewer audio errors (because we don’t need to track SIP state in client anymore). This audio setup currently does not support echo test, so it needs to be disabled when using.

    If you want to try this (keep in mind it is still experimental), you need to add the following block in the bbb-webrtc-sfu’s configuration to enable fullaudio via SFU:

      - path: ./lib/audio/FullAudioProcess.js
        name: fullaudio
        dedicated: true
          mode: native
            # inboundChannel: to-sfu-audio
            # outboundChannel: from-sfu-audio

    The recommended way to add this would be to use the override file /etc/bigbluebutton/bbb-webrtc-sfu/production.yml (note that array configurations are merged by replacement, so we need to pass the full array)

      - path: ./lib/mcs-core/process.js
        name: core
        dedicated: true
        # IPC can be either native|redis right now. Defaults to native
          mode: native
          # inboundChannel: to-mcs-core
          # outboundChannel: from-mcs-core
      - path: ./lib/screenshare/ScreenshareProcess.js
        name: screenshare
        dedicated: true
          mode: native
          # inboundChannel: to-sfu-screenshare
          # outboundChannel: from-sfu-screenshare
      - path: ./lib/video/VideoProcess.js
        name: video
        dedicated: true
          mode: native
          # inboundChannel: to-sfu-video
          # outboundChannel: from-sfu-video
      - path: ./lib/listen-only/listen-only-process.js
        name: audio
        dedicated: true
          mode: native
          # inboundChannel: to-sfu-audio
          # outboundChannel: from-sfu-audio
      - path: ./lib/audio/FullAudioProcess.js
        name: fullaudio
        dedicated: true
          mode: native
            # inboundChannel: to-sfu-audio
            # outboundChannel: from-sfu-audio

    Once fullaudio is defined in bbb-webrtc-sfu, there are two ways of opting in. A) Using API parameters you can have specific meetings use fullaudio by passing: CREATE parameter meta_fullaudio-bridge=fullaudio to override the default sipjs value and JOIN parameter userdata-bbb_skip_check_audio=true to disable echo test for that user.

    B) You can change the defaults in the settings for bbb-html5 by overriding settings.yml Again, the recommended way is to use an override file /etc/bigbluebutton/bbb-html5.yml (you will likely want to merge it carefully with your existing file).

          defaultFullAudioBridge: fullaudio
        skipCheck: true

    After a restart of BigBlueButton (sudo bbb-conf --restart) you can try out this audio join method. Reverting to the default options can be achieved by removing the override sections (and passed API parameters) and restart of BigBlueButton.


    For server requirements, BigBlueButton 2.4 needs similar minimum server requirements as 2.3.

    To install 2.4, use bbb-install.sh. For example, the following command installs BigBlueButton 2.4-dev using bbb.example.com as the hostname and notice@example.com as the email for Let’s Encrypt (you would substitute these values for your own hostname and email address). Notice the version is -v bionic-240, which will install the latest officially published release (alpha/beta/etc) of BigBlueButton 2.4. If you instead use -v bionic-24-dev, you will be installing/updating to the very latest build tracking the source code from branch v2.4.x-release.

    wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -v bionic-240 -s bbb.example.com -e notice@example.com  -a -w

    After installation finishes, you should see the following installed packages (your version numbers may be slightly different).

    # dpkg -l | grep bbb-
    ii  bbb-apps-akka             2.4.0-10     all    BigBlueButton Apps (Akka)
    ii  bbb-config                1:2.4.0-9    amd64  BigBlueButton configuration utilities
    ii  bbb-demo                  1:2.4.0-2    amd64  BigBlueButton API demos
    ii  bbb-etherpad              1:2.4.0-1    amd64  The EtherPad Lite components for BigBlueButton
    ii  bbb-freeswitch-core       2:2.4.0-2    amd64  BigBlueButton build of FreeSWITCH
    ii  bbb-freeswitch-sounds     1:1.6.7-3    amd64  FreeSWITCH Sounds
    ii  bbb-fsesl-akka            2.4.0-5      all    BigBlueButton FS-ESL (Akka)
    ii  bbb-html5                 1:2.4.0-1254 amd64  The HTML5 components for BigBlueButton
    ii  bbb-libreoffice-docker    1:2.4.0-1    amd64  BigBlueButton setup for LibreOffice running in docker
    ii  bbb-mkclean               1:0.8.7-4    amd64  Clean and optimize Matroska and WebM files
    ii  bbb-playback              1:2.4.0-1    amd64  BigBlueButton playback
    ii  bbb-playback-presentation 1:2.4.0-1    amd64  BigBluebutton playback of presentation
    ii  bbb-record-core           1:2.4.0-3    amd64  BigBlueButton record and playback
    ii  bbb-web                   1:2.4.0-8    amd64  BigBlueButton API
    ii  bbb-webrtc-sfu            1:2.4.0-5    amd64  BigBlueButton WebRTC SFU

    This installs the latest version of BigBlueButton 2.4-dev with Let’s encrypt certificate and the API demos. With the API demos installed, you can open https:/// in a browser (where is the hostname you specified in the `bbb-install.sh` command), enter your name, and click 'Join' to join 'Demo Meeting'. For more information, see the [bbb-install.sh](https://github.com/bigbluebutton/bbb-install) documentation.


    Follow Development for 2.4


    We welcome contributors to BigBlueButton 2.4! The best ways to contribute at the current time are:


    Deprecation of password

    Even though it is still possible to create a meeting with a password, it is now being deprecated, and it is not required anymore. So here are some explanations to better illustrate this update:

    • Create - It is possible and recommended to not use the passwords while creating the request:
    https://bbb.example.com/bigbluebutton/api/create?allowStartStopRecording=true&attendeePW=ap&moderatorPW=mp&... &checksum=


    https://bbb.example.com/bigbluebutton/api/create?allowStartStopRecording=true&... &checksum=
    • Join - These requests don’t need to follow the /create endpoint, on the grounds that it has its own parameter to know the role of the user. See the explanation down below:

      • In any cases, if the role parameter is sent along, it will be respected, even if password is passed too;
      • If the role parameter is not passed in the request, and the password exists (i.e., it has been sent in /create endpoint), then the password is mandatory for the /join endpoint to identify which role the user has.
      • If the password does not exist (i.e., it was not defined in /create endpoint), then the role parameter is mandatory, otherwise it is not possible to enter a meeting.
    • End - the password is really not used here. But, if it was set (in the /create endpoint) and passed along in the end endpoint, it will be validated, otherwise, it won’t.