AI Smart Meeting System (applications/meeting)

This lesson deploys the Smart Meeting demo with App Portal in one shot: a single
app-portal install meeting handles “download DEB + fetch models + install dependencies +
deploy resources + start the service” — no more manual compiling, packaging, or pushing 9GB of models.

Prerequisite: App Portal is already installed on the board (see section 1.2 of this lesson)
and app-portal list shows meeting.

Objectives

  • Deploy the meeting demo with app-portal install meeting
  • Manage it with app-portal status/start/stop/restart
  • Understand the demo’s two ports: 3000 (Vue frontend) and 8081 (backend WebSocket)
  • Tell whether the license is active (check if 8081 is listening)

1. Prepare the Environment

1.1 Hardware

Item Requirement
Board RK3588 + RK182X, writable /userdata (models are ~9GB)
Display Optional; the web UI is accessed from a browser
Microphone/Speaker Needed if you want live transcription

1.2 Deploy App Portal First (one-time only)

The following lessons all install apps through App Portal, so spend two minutes installing it now. Run on the PC:

# First connect the board over adb (USB or TCP)
adb connect <board-IP>:5555
adb devices                      # confirm "<board-IP>:5555  device"

cd <SDK>/applications/app_portal
./deploy.sh <board-IP>:5555

The script automatically: builds the app-portal and app-portal-web DEBs → pushes them to the board → installs with dpkg -i.
A successful run ends like:

Setting up app-portal-web (0.5.0) ...
==> DEB: applications/app_portal/deb/app-portal_0.5.0_arm64.deb
==> Deployment completed
    Catalog: /etc/app-portal/catalog.yaml
    Runtime: app-portal runtime-version
    Apps:    app-portal list
    Web:     http://<board-IP>:18090/

On the board, run the self-check:

sudo app-portal check            # catalog: /etc/app-portal/catalog.yaml / valid: True
sudo app-portal runtime-version  # e.g. 1.1.0 (must match the model version)
sudo app-portal list             # shows meeting / clawchips / ai-hub / multistream-* etc.

Actual list output — 8 apps:

multistream-detect   install=apt-deb
clawchips            install=pip-whl
ai-media-base        install=apt-deb
llama-rknn3-server   install=apt-deb
ai-hub               install=apt-deb
multistream-event    install=apt-deb
multistream-vlm      install=apt-deb
meeting              install=apt-deb

Once installed, open the web console: http://<board-IP>:18090/ (service name app-portal-web).

Why deploy this first: it covers the whole pipeline
“download → verify → install dependencies → deploy resources → install service → start”.
Installing meeting in this lesson and clawchips in Lesson 4 is then just one app-portal install <app-id> each.

1.3 Disk Space

df -h /userdata

The meeting app downloads a DEB plus models (~9GB extracted); keep ≥15GB free on /userdata.

2. Task Overview

Runtime layout of the meeting demo:

Browser ──:3000──> Vue frontend (python3 -m http.server serving static pages)
                      │ WebSocket
                      ▼
            rk_meeting_demo backend (:8081)
              ├─ rkasr      ASR speech recognition (streaming)
              ├─ rktextsum  meeting summarization
              ├─ rkrag      retrieval augmentation
              └─ rkvqe      audio enhancement
  • The frontend is just static pages; it shows “loading model xx%” on open
  • The progress bar’s endpoint is decided by 8081: backend up → 100%; backend crashed → stuck at 99% forever
  • The backend requires a .lic license for each module; without one it exits immediately (see FAQ Q3)

3. Steps

Step 1: Install

sudo app-portal install meeting

App Portal will:

  1. Select the published release matching the current RKNN3 Runtime (e.g. 1.1.0)
  2. Download meeting_<ver>_arm64.deb and the model resources from the cloud drive (with sha256 verification and resumable downloads)
  3. Install the DEB via apt/dpkg and deploy resources to /userdata/rk_meeting_demo/
  4. Install and start the systemd service

The first install downloads several GB of models; time depends on bandwidth.
If interrupted, re-running resumes the download. Add --force to reinstall the same version.

Step 2: Check Status

sudo app-portal status meeting

Step 3: Start / Stop

sudo app-portal start meeting
sudo app-portal stop meeting
sudo app-portal restart meeting

You can also use the script in the install directory:
cd /userdata/rk_meeting_demo && ./ai_meeting.sh start|stop|restart.

Step 4: Open the Web UI

In a browser, open:

http://<board-IP>:3000/

The progress bar reaches 100% once the page loads (provided 8081 is listening).

Step 5: License (the dividing line for real transcription)

cd /userdata/rk_meeting_demo
sudo ./auth.sh -u <rkauth-account> -p <password>
sudo app-portal restart meeting

Success indicator:

ss -ltn | grep 8081        # 8081 present = backend is truly running

4. Verification

Item Criterion Notes
Install complete app-portal status meeting shows the installed version
Frontend curl -o /dev/null -w "%{http_code}" http://127.0.0.1:3000/ → 200 measured 200
Port ss -ltn shows 0.0.0.0:3000
Backend ss -ltn shows 0.0.0.0:8081, and pgrep -af rk_meeting_demo has a process requires license
Artifacts /userdata/rk_meeting_demo/ (contains rkasr/ rktextsum/ rkrag/ rkvqe/ rockx/ vue_board/)

Without a license the “normal state” is: 3000 opens, 8081 not listening, progress bar stuck at 99%.
That is not an installation failure — the license is simply not active.

5. FAQ

Q1: app-portal install meeting reports download/verification failure?

The cloud-drive settings live in artifact_sources of
applications/app_portal/configs/apps/80-meeting.yaml (endpoint/share_code/password).
First confirm the board can reach the drive domain:

curl -I https://meta.zbox.filez.com

Downloads resume; re-run sudo app-portal install meeting to continue.

Q2: Out of disk space?

df -h /userdata
sudo du -sh /userdata/app_portal/cache/*       # download cache

Uninstall unused apps (app-portal uninstall <app>) or clear the cache, then reinstall.

Q3: The web UI opens but the progress bar stays at 99%?

The rk_meeting_demo backend is not up. Check in order:

ss -ltn | grep 8081                       # missing → backend down
pgrep -af rk_meeting_demo                 # any process?
cd /userdata/rk_meeting_demo && sudo ./meeting_run.sh    # run in foreground, read the error

The two most common causes:

  1. No license: run ./auth.sh -u <account> -p <password>, then restart;
  2. License file missing: check whether .lic files exist under /userdata/rk_meeting_demo/rkasr/key/.

Old source-built binaries have one more pitfall: without a license the rkasr_init cleanup path
performs a double free causing SIGSEGV (not a single log line appears).
The official DEB installed by App Portal fixes this — do not use your own build.

Q4: Port 8081 taken by another app?

The meeting backend hardcodes 8081. If another app that uses 8081 is installed
(e.g. clawchips’ rkclaw-server), stop the other one first:

sudo app-portal status clawchips
sudo app-portal stop clawchips
sudo app-portal restart meeting

Q5: How to do a clean reinstall?

sudo app-portal uninstall meeting
sudo app-portal install meeting

Model resources are large; before uninstalling/cleaning, confirm nothing else references them.

Summary

  • The meeting demo is deployed with one command: app-portal install meeting
  • Distinguish the two ports: 3000 frontend (opens right away) vs 8081 backend (up = truly working)
  • “Progress bar stuck at 99%” almost equals “backend not running”, and the most common cause is a missing license
  • Using the official App Portal DEB avoids the double-free crash of the source-built version