diff options
Diffstat (limited to 'recipes-connectivity')
21 files changed, 0 insertions, 935 deletions
diff --git a/recipes-connectivity/bluez-alsa/bluez-alsa/0001-utils-add-a-gstreamer-helper-application-for-interco.patch b/recipes-connectivity/bluez-alsa/bluez-alsa/0001-utils-add-a-gstreamer-helper-application-for-interco.patch deleted file mode 100644 index 6c9a388c8..000000000 --- a/recipes-connectivity/bluez-alsa/bluez-alsa/0001-utils-add-a-gstreamer-helper-application-for-interco.patch +++ /dev/null @@ -1,517 +0,0 @@ -From f2e6a0a324106b40195f88953e55a355875d2b1b Mon Sep 17 00:00:00 2001 -From: George Kiagiadakis <george.kiagiadakis@collabora.com> -Date: Fri, 4 Oct 2019 20:51:24 +0300 -Subject: [PATCH] utils: add a gstreamer helper application for interconnection - with pipewire - -Unfortunately, the bluez-alsa PCM plugin does not work correctly -when it is used through pipewire (or gstreamer, or anywhere really...). - -Thanfully, the bluez-alsa PCM plugin is only a simple client that -reads/writes on a file descriptor that was opened by bluealsa. -This allows us to use bluealsa without the PCM plugin, just like it -is done in the aplay.c util. - -This one uses GStreamer to implement the plumbing between pipewire -and the file descriptor. On the reading side we are also doing some -tricks to ensure a smooth stream, which is not the case for the -stream that is coming out of bluealsa. - -This helper is implemented as a patch to bluez-alsa so that it can -use its internal private API. In the future this needs some re-thinking. - -Upstream-Status: Inappropriate ---- - configure.ac | 7 + - utils/Makefile.am | 20 +++ - utils/gst-helper.c | 432 +++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 459 insertions(+) - create mode 100644 utils/gst-helper.c - -diff --git a/configure.ac b/configure.ac -index 4825afa..9125871 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -141,6 +141,13 @@ AM_COND_IF([ENABLE_HCITOP], [ - PKG_CHECK_MODULES([NCURSES], [ncurses]) - ]) - -+AC_ARG_ENABLE([gsthelper], -+ [AS_HELP_STRING([--enable-gsthelper], [enable building of gsthelper tool])]) -+AM_CONDITIONAL([ENABLE_GSTHELPER], [test "x$enable_gsthelper" = "xyes"]) -+AM_COND_IF([ENABLE_GSTHELPER], [ -+ PKG_CHECK_MODULES([GST], [gstreamer-1.0 glib-2.0]) -+]) -+ - AC_ARG_ENABLE([test], - [AS_HELP_STRING([--enable-test], [enable unit test])]) - AM_CONDITIONAL([ENABLE_TEST], [test "x$enable_test" = "xyes"]) -diff --git a/utils/Makefile.am b/utils/Makefile.am -index 9057f2c..9790474 100644 ---- a/utils/Makefile.am -+++ b/utils/Makefile.am -@@ -47,3 +47,23 @@ hcitop_LDADD = \ - @LIBBSD_LIBS@ \ - @NCURSES_LIBS@ - endif -+ -+if ENABLE_GSTHELPER -+bin_PROGRAMS += bluealsa-gst-helper -+bluealsa_gst_helper_SOURCES = \ -+ ../src/shared/dbus-client.c \ -+ ../src/shared/ffb.c \ -+ ../src/shared/log.c \ -+ gst-helper.c -+bluealsa_gst_helper_CFLAGS = \ -+ -I$(top_srcdir)/src \ -+ @ALSA_CFLAGS@ \ -+ @BLUEZ_CFLAGS@ \ -+ @DBUS1_CFLAGS@ \ -+ @GST_CFLAGS@ -+bluealsa_gst_helper_LDADD = \ -+ @ALSA_LIBS@ \ -+ @BLUEZ_LIBS@ \ -+ @DBUS1_LIBS@ \ -+ @GST_LIBS@ -+endif -diff --git a/utils/gst-helper.c b/utils/gst-helper.c -new file mode 100644 -index 0000000..de1d47c ---- /dev/null -+++ b/utils/gst-helper.c -@@ -0,0 +1,432 @@ -+/* Bluez-Alsa PipeWire integration GStreamer helper -+ * -+ * Copyright © 2016-2019 Arkadiusz Bokowy -+ * Copyright © 2019 Collabora Ltd. -+ * @author George Kiagiadakis <george.kiagiadakis@collabora.com> -+ * -+ * SPDX-License-Identifier: MIT -+ */ -+ -+#if HAVE_CONFIG_H -+# include <config.h> -+#endif -+ -+#include <errno.h> -+#include <getopt.h> -+#include <poll.h> -+#include <pthread.h> -+#include <signal.h> -+#include <stdbool.h> -+#include <stdint.h> -+#include <stdio.h> -+#include <stdlib.h> -+#include <string.h> -+#include <unistd.h> -+ -+#include <bluetooth/bluetooth.h> -+#include <dbus/dbus.h> -+#include <gst/gst.h> -+ -+#include "shared/dbus-client.h" -+#include "shared/defs.h" -+#include "shared/ffb.h" -+#include "shared/log.h" -+ -+struct worker { -+ /* used BlueALSA PCM device */ -+ struct ba_pcm ba_pcm; -+ /* file descriptor of PCM FIFO */ -+ int ba_pcm_fd; -+ /* file descriptor of PCM control */ -+ int ba_pcm_ctrl_fd; -+ /* the gstreamer pipelines (sink & source) */ -+ GstElement *pipeline[2]; -+ /* the queue & pwaudiosink of the sink pipeline */ -+ GstElement *queue; -+ GstElement *pwelem; -+}; -+ -+static struct ba_dbus_ctx dbus_ctx; -+static GHashTable *workers; -+static bool main_loop_on = true; -+ -+static void -+main_loop_stop(int sig) -+{ -+ /* Call to this handler restores the default action, so on the -+ * second call the program will be forcefully terminated. */ -+ -+ struct sigaction sigact = { .sa_handler = SIG_DFL }; -+ sigaction(sig, &sigact, NULL); -+ -+ main_loop_on = false; -+} -+ -+static GstBusSyncReply -+bus_sync_handler(GstBus *bus, GstMessage *message, gpointer user_data) -+{ -+ struct worker *w = user_data; -+ GstState s; -+ -+ switch (GST_MESSAGE_TYPE (message)) { -+ case GST_MESSAGE_REQUEST_STATE: -+ gst_message_parse_request_state (message, &s); -+ -+ debug ("corked: %d", (s == GST_STATE_PAUSED)); -+ -+ /* drop queue data when corked */ -+ g_object_set (w->queue, -+ "leaky", (s == GST_STATE_PAUSED) ? 2 /* downstream */ : 0 /* no */, -+ NULL); -+ gst_element_set_state (w->pwelem, s); -+ -+ /* flush the queue when resuming */ -+ if (s == GST_STATE_PLAYING) { -+ gst_element_send_event (w->queue, gst_event_new_flush_start ()); -+ gst_element_send_event (w->queue, gst_event_new_flush_stop (FALSE)); -+ } -+ break; -+ default: -+ break; -+ } -+ -+ gst_message_unref (message); -+ return GST_BUS_DROP; -+} -+ -+static int -+worker_start_pipeline(struct worker *w, int id, int mode, int profile) -+{ -+ GError *gerr = NULL; -+ DBusError err = DBUS_ERROR_INIT; -+ const gchar * role = NULL; -+ -+ if (w->pipeline[id]) -+ return 0; -+ -+ if (!bluealsa_dbus_pcm_open(&dbus_ctx, w->ba_pcm.pcm_path, mode, -+ &w->ba_pcm_fd, &w->ba_pcm_ctrl_fd, &err)) { -+ error("Couldn't open PCM: %s", err.message); -+ dbus_error_free(&err); -+ goto fail; -+ } -+ -+ if (mode == BA_PCM_FLAG_SINK) { -+ debug("sink start"); -+ w->pipeline[id] = gst_parse_launch( -+ /* add a silent live source to ensure a perfect live stream on the -+ output, even when the bt device is not sending or has gaps; -+ this also effectively changes the clock to be the system clock, -+ which is the same clock used by bluez-alsa on the sending side */ -+ "audiotestsrc is-live=true wave=silence ! capsfilter name=capsf " -+ "! audiomixer name=m " -+ /* mix the input from bluez-alsa using fdsrc; rawaudioparse -+ is necessary to convert bytes to time and align the buffers */ -+ "fdsrc name=fdelem do-timestamp=true ! capsfilter name=capsf2 " -+ "! rawaudioparse use-sink-caps=true ! m. " -+ /* take the mixer output, convert and push to pipewire */ -+ "m.src ! capsfilter name=capsf3 ! audioconvert ! audioresample " -+ "! audio/x-raw,format=F32LE,rate=48000 ! identity sync=true " -+ "! queue name=queue leaky=no max-size-time=0 max-size-buffers=0 max-size-bytes=192000 " -+ "! pwaudiosink name=pwelem", -+ &gerr); -+ -+ /* a2dp is for music, sco is for calls */ -+ role = (profile == BA_PCM_FLAG_PROFILE_A2DP) ? "Multimedia" : "Communication"; -+ } -+ else if (mode == BA_PCM_FLAG_SOURCE && profile == BA_PCM_FLAG_PROFILE_SCO) { -+ debug("source start"); -+ w->pipeline[id] = gst_parse_launch( -+ /* read from pipewire and put the buffers on a leaky queue, which -+ will essentially allow pwaudiosrc to continue working while -+ the fdsink is blocked (when there is no phone call in progress). -+ 9600 bytes = 50ms @ F32LE/1ch/48000 -+ */ -+ "pwaudiosrc name=pwelem ! audio/x-raw,format=F32LE,rate=48000 " -+ "! queue name=queue leaky=downstream max-size-time=0 max-size-buffers=0 max-size-bytes=9600 " -+ "! audioconvert ! audioresample ! capsfilter name=capsf " -+ "! fdsink name=fdelem", &gerr); -+ -+ role = "Communication"; -+ } -+ -+ if (gerr) { -+ error("Failed to start pipeline: %s", gerr->message); -+ g_error_free(gerr); -+ goto fail; -+ } -+ -+ if (w->pipeline[id]) { -+ g_autofree gchar *capsstr = NULL; -+ g_autoptr (GstElement) fdelem = gst_bin_get_by_name(GST_BIN(w->pipeline[id]), "fdelem"); -+ g_autoptr (GstElement) pwelem = gst_bin_get_by_name(GST_BIN(w->pipeline[id]), "pwelem"); -+ g_autoptr (GstElement) queue = gst_bin_get_by_name(GST_BIN(w->pipeline[id]), "queue"); -+ g_autoptr (GstElement) capsf = gst_bin_get_by_name(GST_BIN(w->pipeline[id]), "capsf"); -+ g_autoptr (GstElement) capsf2 = gst_bin_get_by_name(GST_BIN(w->pipeline[id]), "capsf2"); -+ g_autoptr (GstElement) capsf3 = gst_bin_get_by_name(GST_BIN(w->pipeline[id]), "capsf3"); -+ g_autoptr (GstCaps) caps = gst_caps_new_simple("audio/x-raw", -+ "format", G_TYPE_STRING, "S16LE", -+ "layout", G_TYPE_STRING, "interleaved", -+ "channels", G_TYPE_INT, w->ba_pcm.channels, -+ "rate", G_TYPE_INT, w->ba_pcm.sampling, -+ NULL); -+ g_autoptr (GstStructure) stream_props = gst_structure_new("props", -+ "media.role", G_TYPE_STRING, role, -+ "bluealsa.profile", G_TYPE_STRING, -+ (profile == BA_PCM_FLAG_PROFILE_SCO) ? "sco" : "a2dp", -+ NULL); -+ -+ g_object_set(capsf, "caps", caps, NULL); -+ if (capsf2) -+ g_object_set(capsf2, "caps", caps, NULL); -+ if (capsf3) -+ g_object_set(capsf3, "caps", caps, NULL); -+ -+ capsstr = gst_caps_to_string (caps); -+ debug(" caps: %s", capsstr); -+ -+ g_object_set(fdelem, "fd", w->ba_pcm_fd, NULL); -+ g_object_set(pwelem, "stream-properties", stream_props, NULL); -+ -+ if (mode == BA_PCM_FLAG_SINK) { -+ g_autoptr (GstBus) bus = gst_pipeline_get_bus(GST_PIPELINE(w->pipeline[id])); -+ gst_bus_set_sync_handler(bus, bus_sync_handler, w, NULL); -+ w->queue = queue; -+ w->pwelem = pwelem; -+ } -+ -+ gst_element_set_state(w->pipeline[id], GST_STATE_PLAYING); -+ } -+ -+ return 0; -+fail: -+ g_clear_object(&w->pipeline[id]); -+ return -1; -+} -+ -+static int -+worker_start(struct worker *w) -+{ -+ int mode = w->ba_pcm.flags & (BA_PCM_FLAG_SOURCE | BA_PCM_FLAG_SINK); -+ int profile = w->ba_pcm.flags & (BA_PCM_FLAG_PROFILE_A2DP | BA_PCM_FLAG_PROFILE_SCO); -+ /* human-readable BT address */ -+ char addr[18]; -+ -+ g_return_val_if_fail (profile != 0 && profile != (BA_PCM_FLAG_PROFILE_A2DP | BA_PCM_FLAG_PROFILE_SCO), -1); -+ -+ ba2str(&w->ba_pcm.addr, addr); -+ debug("%p: worker start addr:%s, mode:0x%x, profile:0x%x", w, addr, mode, profile); -+ -+ if (mode & BA_PCM_FLAG_SINK) -+ worker_start_pipeline(w, 0, BA_PCM_FLAG_SINK, profile); -+ if (mode & BA_PCM_FLAG_SOURCE) -+ worker_start_pipeline(w, 1, BA_PCM_FLAG_SOURCE, profile); -+} -+ -+static int -+worker_stop(struct worker *w) -+{ -+ debug("stop worker %p", w); -+ if (w->pipeline[0]) { -+ gst_element_set_state(w->pipeline[0], GST_STATE_NULL); -+ g_clear_object(&w->pipeline[0]); -+ } -+ if (w->pipeline[1]) { -+ gst_element_set_state(w->pipeline[1], GST_STATE_NULL); -+ g_clear_object(&w->pipeline[1]); -+ } -+ if (w->ba_pcm_fd != -1) { -+ close(w->ba_pcm_fd); -+ w->ba_pcm_fd = -1; -+ } -+ if (w->ba_pcm_ctrl_fd != -1) { -+ close(w->ba_pcm_ctrl_fd); -+ w->ba_pcm_ctrl_fd = -1; -+ } -+ return 0; -+} -+ -+static int -+supervise_pcm_worker(struct worker *worker) -+{ -+ if (worker == NULL) -+ return -1; -+ -+ /* no mode? */ -+ if (worker->ba_pcm.flags & (BA_PCM_FLAG_SOURCE | BA_PCM_FLAG_SINK) == 0) -+ goto stop; -+ -+ /* no profile? */ -+ if (worker->ba_pcm.flags & (BA_PCM_FLAG_PROFILE_A2DP | BA_PCM_FLAG_PROFILE_SCO) == 0) -+ goto stop; -+ -+ /* check whether SCO has selected codec */ -+ if (worker->ba_pcm.flags & BA_PCM_FLAG_PROFILE_SCO && -+ worker->ba_pcm.codec == 0) { -+ debug("Skipping SCO with codec not selected"); -+ goto stop; -+ } -+ -+start: -+ return worker_start(worker); -+stop: -+ return worker_stop(worker); -+} -+ -+static void -+worker_new(struct ba_pcm *pcm) -+{ -+ struct worker *w = g_slice_new0 (struct worker); -+ memcpy(&w->ba_pcm, pcm, sizeof(struct ba_pcm)); -+ w->ba_pcm_fd = -1; -+ w->ba_pcm_ctrl_fd = -1; -+ g_hash_table_insert(workers, w->ba_pcm.pcm_path, w); -+ supervise_pcm_worker(w); -+} -+ -+static DBusHandlerResult -+dbus_signal_handler(DBusConnection *conn, DBusMessage *message, void *data) -+{ -+ (void)conn; -+ (void)data; -+ -+ const char *path = dbus_message_get_path(message); -+ const char *interface = dbus_message_get_interface(message); -+ const char *signal = dbus_message_get_member(message); -+ -+ DBusMessageIter iter; -+ struct worker *worker; -+ -+ if (strcmp(interface, BLUEALSA_INTERFACE_MANAGER) == 0) { -+ -+ if (strcmp(signal, "PCMAdded") == 0) { -+ struct ba_pcm pcm; -+ if (!dbus_message_iter_init(message, &iter) || -+ !bluealsa_dbus_message_iter_get_pcm(&iter, NULL, &pcm)) { -+ error("Couldn't add new PCM: %s", "Invalid signal signature"); -+ goto fail; -+ } -+ worker_new(&pcm); -+ return DBUS_HANDLER_RESULT_HANDLED; -+ } -+ -+ if (strcmp(signal, "PCMRemoved") == 0) { -+ if (!dbus_message_iter_init(message, &iter) || -+ dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_OBJECT_PATH) { -+ error("Couldn't remove PCM: %s", "Invalid signal signature"); -+ goto fail; -+ } -+ dbus_message_iter_get_basic(&iter, &path); -+ g_hash_table_remove(workers, path); -+ return DBUS_HANDLER_RESULT_HANDLED; -+ } -+ -+ } -+ -+ if (strcmp(interface, DBUS_INTERFACE_PROPERTIES) == 0) { -+ worker = g_hash_table_lookup(workers, path); -+ if (!worker) -+ goto fail; -+ if (!dbus_message_iter_init(message, &iter) || -+ dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING) { -+ error("Couldn't update PCM: %s", "Invalid signal signature"); -+ goto fail; -+ } -+ dbus_message_iter_get_basic(&iter, &interface); -+ dbus_message_iter_next(&iter); -+ if (!bluealsa_dbus_message_iter_get_pcm_props(&iter, NULL, &worker->ba_pcm)) -+ goto fail; -+ supervise_pcm_worker(worker); -+ return DBUS_HANDLER_RESULT_HANDLED; -+ } -+ -+fail: -+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; -+} -+ -+static void -+destroy_worker(void *worker) -+{ -+ struct worker *w = worker; -+ worker_stop(w); -+ g_slice_free(struct worker, w); -+} -+ -+int -+main(int argc, char *argv[]) -+{ -+ int ret = EXIT_SUCCESS; -+ -+ log_open(argv[0], false, false); -+ gst_init(&argc, &argv); -+ dbus_threads_init_default(); -+ -+ DBusError err = DBUS_ERROR_INIT; -+ if (!bluealsa_dbus_connection_ctx_init(&dbus_ctx, BLUEALSA_SERVICE, &err)) { -+ error("Couldn't initialize D-Bus context: %s", err.message); -+ return EXIT_FAILURE; -+ } -+ -+ bluealsa_dbus_connection_signal_match_add(&dbus_ctx, -+ BLUEALSA_SERVICE, NULL, BLUEALSA_INTERFACE_MANAGER, "PCMAdded", NULL); -+ bluealsa_dbus_connection_signal_match_add(&dbus_ctx, -+ BLUEALSA_SERVICE, NULL, BLUEALSA_INTERFACE_MANAGER, "PCMRemoved", NULL); -+ bluealsa_dbus_connection_signal_match_add(&dbus_ctx, -+ BLUEALSA_SERVICE, NULL, DBUS_INTERFACE_PROPERTIES, "PropertiesChanged", -+ "arg0='"BLUEALSA_INTERFACE_PCM"'"); -+ -+ if (!dbus_connection_add_filter(dbus_ctx.conn, dbus_signal_handler, NULL, NULL)) { -+ error("Couldn't add D-Bus filter: %s", err.message); -+ return EXIT_FAILURE; -+ } -+ -+ workers = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, destroy_worker); -+ -+ { -+ struct ba_pcm *pcms = NULL; -+ size_t pcms_count = 0, i; -+ -+ if (!bluealsa_dbus_get_pcms(&dbus_ctx, &pcms, &pcms_count, &err)) -+ warn("Couldn't get BlueALSA PCM list: %s", err.message); -+ -+ for (i = 0; i < pcms_count; i++) { -+ worker_new(&pcms[i]); -+ } -+ -+ free(pcms); -+ } -+ -+ struct sigaction sigact = { .sa_handler = main_loop_stop }; -+ sigaction(SIGTERM, &sigact, NULL); -+ sigaction(SIGINT, &sigact, NULL); -+ -+ /* Ignore SIGPIPE, which may be received when writing to the bluealsa -+ socket when it is closed on the remote end */ -+ signal(SIGPIPE, SIG_IGN); -+ -+ debug("Starting main loop"); -+ while (main_loop_on) { -+ -+ struct pollfd pfds[10]; -+ nfds_t pfds_len = ARRAYSIZE(pfds); -+ -+ if (!bluealsa_dbus_connection_poll_fds(&dbus_ctx, pfds, &pfds_len)) { -+ error("Couldn't get D-Bus connection file descriptors"); -+ ret = EXIT_FAILURE; -+ goto out; -+ } -+ -+ if (poll(pfds, pfds_len, -1) == -1 && -+ errno == EINTR) -+ continue; -+ -+ if (bluealsa_dbus_connection_poll_dispatch(&dbus_ctx, pfds, pfds_len)) -+ while (dbus_connection_dispatch(dbus_ctx.conn) == DBUS_DISPATCH_DATA_REMAINS) -+ continue; -+ -+ } -+ -+out: -+ g_hash_table_unref(workers); -+ return ret; -+} --- -2.24.0 - diff --git a/recipes-connectivity/bluez-alsa/bluez-alsa/bluealsa-gst-helper@.service b/recipes-connectivity/bluez-alsa/bluez-alsa/bluealsa-gst-helper@.service deleted file mode 100644 index 495ab6222..000000000 --- a/recipes-connectivity/bluez-alsa/bluez-alsa/bluealsa-gst-helper@.service +++ /dev/null @@ -1,18 +0,0 @@ -[Unit] -Description=Bluetooth audio helper for user %i -Requires=pipewire@%i.socket bluez-alsa.service -After=pipewire@%i.socket bluez-alsa.service - -[Service] -Type=simple -Restart=on-failure -ExecStart=/usr/bin/bluealsa-gst-helper - -Environment=XDG_RUNTIME_DIR=/run/user/%i -Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%i/bus - -User=%i -Slice=user-%i.slice -SupplementaryGroups=audio -UMask=0077 -CapabilityBoundingSet= diff --git a/recipes-connectivity/bluez-alsa/bluez-alsa_git.bb b/recipes-connectivity/bluez-alsa/bluez-alsa_git.bb deleted file mode 100644 index 27f462a87..000000000 --- a/recipes-connectivity/bluez-alsa/bluez-alsa_git.bb +++ /dev/null @@ -1,43 +0,0 @@ -SUMMARY = "Bluetooth Audio ALSA Backend" -HOMEPAGE = "https://github.com/Arkq/bluez-alsa" -SECTION = "libs" - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE;md5=3d7d6ac7e2dbd2505652dceb3acdf1fe" - -SRC_URI = "git://github.com/Arkq/bluez-alsa.git;protocol=https;branch=master" -SRCREV = "2cd6e4686f7808276480b430fb37df55dfdcc02b" - -SRC_URI += "file://bluez-alsa.service" - -S = "${WORKDIR}/git" - -DEPENDS += "alsa-lib bluez5 systemd glib-2.0 sbc" - -PACKAGECONFIG[aac] = "--enable-aac, --disable-aac, " -PACKAGECONFIG[aptx] = "--enable-aptx,--disable-aptx," -PACKAGECONFIG[ofono] = "--enable-ofono, --disable-ofono," - -inherit autotools pkgconfig -inherit systemd - -SYSTEMD_AUTO_ENABLE = "enable" -SYSTEMD_SERVICE:${PN} = "bluez-alsa.service" - -PACKAGECONFIG += "ofono" - -# enable debug tools in devel images -PACKAGECONFIG[hcitop] = "--enable-hcitop, --disable-hcitop, libbsd ncurses" -PACKAGECONFIG[rfcomm] = "--enable-rfcomm, --disable-rfcomm," -PACKAGECONFIG:append:agl-devel = " hcitop rfcomm" - -do_install:append () { - install -d ${D}${base_libdir}/systemd/system - install -m 0644 ${WORKDIR}/bluez-alsa.service ${D}${base_libdir}/systemd/system -} - -FILES:${PN} += "\ - ${datadir}/alsa/alsa.conf.d/20-bluealsa.conf\ - ${libdir}/alsa-lib/libasound_module_ctl_bluealsa.so\ - ${libdir}/alsa-lib/libasound_module_pcm_bluealsa.so\ -" diff --git a/recipes-connectivity/bluez-alsa/bluez-alsa_git.bbappend b/recipes-connectivity/bluez-alsa/bluez-alsa_git.bbappend deleted file mode 100644 index b592e822b..000000000 --- a/recipes-connectivity/bluez-alsa/bluez-alsa_git.bbappend +++ /dev/null @@ -1,35 +0,0 @@ -FILESEXTRAPATHS:prepend := "${THISDIR}/bluez-alsa:" - -SRC_URI += "\ - file://0001-utils-add-a-gstreamer-helper-application-for-interco.patch \ - file://bluealsa-gst-helper@.service \ - " - -PACKAGECONFIG += "gsthelper" -PACKAGECONFIG[gsthelper] = "--enable-gsthelper, --disable-gsthelper, gstreamer1.0" - -do_install:append() { - if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then - # install the service file - mkdir -p ${D}${systemd_system_unitdir}/ - install -m 0644 ${WORKDIR}/bluealsa-gst-helper@.service ${D}${systemd_system_unitdir}/bluealsa-gst-helper@.service - - # enable the helper to start together with afm-user-session - mkdir -p ${D}${systemd_system_unitdir}/afm-user-session@.target.wants - ln -sf ../bluealsa-gst-helper@.service ${D}${systemd_system_unitdir}/afm-user-session@.target.wants/bluealsa-gst-helper@.service - fi -} - -PACKAGES =+ "${PN}-pipewire" - -FILES:${PN}-pipewire = "\ - ${bindir}/bluealsa-gst-helper \ - ${systemd_system_unitdir}/bluealsa-gst-helper@.service \ - ${systemd_system_unitdir}/afm-user-session@.target.wants/bluealsa-gst-helper@.service \ - " -RDEPENDS:${PN}-pipewire += "\ - bluez-alsa \ - pipewire \ - gstreamer1.0-plugins-base \ - gstreamer1.0-pipewire \ - " diff --git a/recipes-connectivity/bluez-alsa/files/bluez-alsa.service b/recipes-connectivity/bluez-alsa/files/bluez-alsa.service deleted file mode 100644 index b59302ee4..000000000 --- a/recipes-connectivity/bluez-alsa/files/bluez-alsa.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=Bluetooth Audio ALSA Backend -After=bluetooth.service -Requires=bluetooth.service - -[Service] -Type=simple -ExecStart=/usr/bin/bluealsa -p a2dp-sink -p hfp-ofono - -[Install] -WantedBy=multi-user.target diff --git a/recipes-connectivity/bluez5/bluez5/bluetooth.conf b/recipes-connectivity/bluez5/bluez5/bluetooth.conf deleted file mode 100644 index 1f2762de7..000000000 --- a/recipes-connectivity/bluez5/bluez5/bluetooth.conf +++ /dev/null @@ -1,39 +0,0 @@ -<!-- This configuration file specifies the required security policies - for Bluetooth core daemon to work. --> - -<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" - "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> -<busconfig> - - <!-- ../system.conf have denied everything, so we just punch some holes --> - - <policy user="root"> - <allow own="org.bluez"/> - <allow send_destination="org.bluez"/> - <allow send_interface="org.bluez.Agent1"/> - <allow send_interface="org.bluez.MediaEndpoint1"/> - <allow send_interface="org.bluez.MediaPlayer1"/> - <allow send_interface="org.bluez.ThermometerWatcher1"/> - <allow send_interface="org.bluez.AlertAgent1"/> - <allow send_interface="org.bluez.Profile1"/> - <allow send_interface="org.bluez.HeartRateWatcher1"/> - <allow send_interface="org.bluez.CyclingSpeedWatcher1"/> - <allow send_interface="org.bluez.GattCharacteristic1"/> - <allow send_interface="org.bluez.GattDescriptor1"/> - <allow send_interface="org.freedesktop.DBus.ObjectManager"/> - <allow send_interface="org.freedesktop.DBus.Properties"/> - <allow receive_type="signal" receive_sender="org.bluez" receive_interface="org.freedesktop.DBus.Properties"/> - <allow receive_type="signal" receive_sender="org.bluez" receive_interface="org.freedesktop.DBus.ObjectManager"/> - </policy> - - <policy at_console="true"> - <allow send_destination="org.bluez"/> - </policy> - - <!-- allow users of lp group (printing subsystem) to - communicate with bluetoothd --> - <policy group="lp"> - <allow send_destination="org.bluez"/> - </policy> - -</busconfig> diff --git a/recipes-connectivity/bluez5/bluez5/bluetooth.service b/recipes-connectivity/bluez5/bluez5/bluetooth.service deleted file mode 100644 index 8ae83bd48..000000000 --- a/recipes-connectivity/bluez5/bluez5/bluetooth.service +++ /dev/null @@ -1,21 +0,0 @@ -[Unit] -Description=Bluetooth service -Documentation=man:bluetoothd(8) -ConditionPathIsDirectory=/sys/class/bluetooth - -[Service] -Type=dbus -BusName=org.bluez -ExecStartPre=-/usr/bin/hciconfig hci0 aclmtu 930:10 -ExecStart=/usr/libexec/bluetooth/bluetoothd -NotifyAccess=main -#WatchdogSec=10 -#Restart=on-failure -CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE -LimitNPROC=1 -ProtectHome=true -ProtectSystem=full - -[Install] -WantedBy=bluetooth.target -Alias=dbus-org.bluez.service diff --git a/recipes-connectivity/bluez5/bluez5/obex.service b/recipes-connectivity/bluez5/bluez5/obex.service deleted file mode 100644 index 87ffff6ae..000000000 --- a/recipes-connectivity/bluez5/bluez5/obex.service +++ /dev/null @@ -1,10 +0,0 @@ -[Unit] -Description=Bluetooth OBEX service - -[Service] -Type=dbus -BusName=org.bluez.obex -ExecStart=/usr/libexec/bluetooth/obexd --root=/var/volatile/tmp - -[Install] -Alias=dbus-org.bluez.obex.service diff --git a/recipes-connectivity/bluez5/bluez5/tmpdir.conf b/recipes-connectivity/bluez5/bluez5/tmpdir.conf deleted file mode 100644 index 8545d76ec..000000000 --- a/recipes-connectivity/bluez5/bluez5/tmpdir.conf +++ /dev/null @@ -1,2 +0,0 @@ -[Service] -Environment="TMPDIR=/run/user/%U/usrshr" diff --git a/recipes-connectivity/bluez5/bluez5_%.bbappend b/recipes-connectivity/bluez5/bluez5_%.bbappend deleted file mode 100644 index 18e694989..000000000 --- a/recipes-connectivity/bluez5/bluez5_%.bbappend +++ /dev/null @@ -1 +0,0 @@ -require ${@bb.utils.contains('AGL_FEATURES', 'agldemo', 'bluez5_agldemo.inc', '', d)} diff --git a/recipes-connectivity/bluez5/bluez5_agldemo.inc b/recipes-connectivity/bluez5/bluez5_agldemo.inc deleted file mode 100644 index 588e6302b..000000000 --- a/recipes-connectivity/bluez5/bluez5_agldemo.inc +++ /dev/null @@ -1,24 +0,0 @@ -FILESEXTRAPATHS:prepend := "${THISDIR}/bluez5:" -SRC_URI:append = " \ - file://bluetooth.conf \ - file://tmpdir.conf \ - file://obex.service \ - file://bluetooth.service \ -" - -FILES:${PN}:append = " ${systemd_user_unitdir}/obex.service.d/tmpdir.conf" - -do_install:append() { - install -m 0644 ${WORKDIR}/bluetooth.conf ${D}${sysconfdir}/dbus-1/system.d/bluetooth.conf - - if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then - mkdir -p ${D}${systemd_user_unitdir}/obex.service.d - - install -m 0644 ${WORKDIR}/obex.service ${D}${systemd_user_unitdir} - install -m 0644 ${WORKDIR}/tmpdir.conf ${D}${systemd_user_unitdir}/obex.service.d/tmpdir.conf - mkdir -p ${D}/etc/systemd/user - ln -sf ${systemd_user_unitdir}/obex.service ${D}/etc/systemd/user/dbus-org.bluez.obex.service - mkdir -p ${D}${systemd_system_unitdir} - install -m 0644 ${WORKDIR}/bluetooth.service ${D}${systemd_system_unitdir} - fi -} diff --git a/recipes-connectivity/neard/files/0001-systemd-neard-add-multi-user.target-to-neard.service.patch b/recipes-connectivity/neard/files/0001-systemd-neard-add-multi-user.target-to-neard.service.patch deleted file mode 100644 index c32951693..000000000 --- a/recipes-connectivity/neard/files/0001-systemd-neard-add-multi-user.target-to-neard.service.patch +++ /dev/null @@ -1,25 +0,0 @@ -From d8c03a31e2734e59af43dd50cbd7f5a94d798ab1 Mon Sep 17 00:00:00 2001 -From: Matt Ranostay <matt.ranostay@konsulko.com> -Date: Tue, 10 Jul 2018 21:18:26 -0700 -Subject: [PATCH] systemd: neard: add multi-user.target to neard.service - -Allowing a service to be system level requires a WantedBy= target - -Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com> ---- - src/neard.service.in | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/neard.service.in b/src/neard.service.in -index dfa238c..540da7e 100644 ---- a/src/neard.service.in -+++ b/src/neard.service.in -@@ -9,4 +9,5 @@ ExecStart=@pkglibexecdir@/neard -n - LimitNPROC=1 - - [Install] -+WantedBy=multi-user.target - Alias=dbus-org.neard.service --- -2.17.1 - diff --git a/recipes-connectivity/neard/files/0002-ndef-avoid-dbus-property_get_type-method-on-empty-re.patch b/recipes-connectivity/neard/files/0002-ndef-avoid-dbus-property_get_type-method-on-empty-re.patch deleted file mode 100644 index 49c11a509..000000000 --- a/recipes-connectivity/neard/files/0002-ndef-avoid-dbus-property_get_type-method-on-empty-re.patch +++ /dev/null @@ -1,33 +0,0 @@ -From d7ea2a00e00795ad24897e3481b015a27d37d60f Mon Sep 17 00:00:00 2001 -From: Raquel Medina <raquel.medina@konsulko.com> -Date: Tue, 22 Jan 2019 09:00:05 -0500 -Subject: [PATCH] ndef: avoid dbus property_get_type method on empty record - -Signed-off-by: Raquel Medina <raquel.medina@konsulko.com> ---- - src/ndef.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/src/ndef.c b/src/ndef.c -index 5656baf..883c6f4 100644 ---- a/src/ndef.c -+++ b/src/ndef.c -@@ -2832,10 +2832,14 @@ GList *near_ndef_parse_msg(uint8_t *ndef_data, size_t ndef_length, - case RECORD_TYPE_WKT_ALTERNATIVE_CARRIER: - case RECORD_TYPE_WKT_COLLISION_RESOLUTION: - case RECORD_TYPE_WKT_ERROR: -- case RECORD_TYPE_UNKNOWN: - case RECORD_TYPE_ERROR: - break; - -+ case RECORD_TYPE_UNKNOWN: -+ if (record->header->tnf == RECORD_TNF_EMPTY) -+ goto fail; -+ break; -+ - case RECORD_TYPE_WKT_HANDOVER_REQUEST: - case RECORD_TYPE_WKT_HANDOVER_SELECT: - /* --- -2.17.1 - diff --git a/recipes-connectivity/neard/neard_0.16.bbappend b/recipes-connectivity/neard/neard_0.16.bbappend deleted file mode 100644 index 2ab0381cc..000000000 --- a/recipes-connectivity/neard/neard_0.16.bbappend +++ /dev/null @@ -1 +0,0 @@ -require ${@bb.utils.contains('AGL_FEATURES', 'agldemo', 'neard_agldemo.inc', '', d)} diff --git a/recipes-connectivity/neard/neard_agldemo.inc b/recipes-connectivity/neard/neard_agldemo.inc deleted file mode 100644 index 513486fc6..000000000 --- a/recipes-connectivity/neard/neard_agldemo.inc +++ /dev/null @@ -1,7 +0,0 @@ -FILESEXTRAPATHS:prepend := "${THISDIR}/files:" - -SRC_URI:append = "\ - file://0001-systemd-neard-add-multi-user.target-to-neard.service.patch \ - file://0002-ndef-avoid-dbus-property_get_type-method-on-empty-re.patch \ - " -SYSTEMD_SERVICE:${PN}:append = " neard.service" diff --git a/recipes-connectivity/neardal/neardal.inc b/recipes-connectivity/neardal/neardal.inc deleted file mode 100644 index 1cad75fb4..000000000 --- a/recipes-connectivity/neardal/neardal.inc +++ /dev/null @@ -1,22 +0,0 @@ -SUMMARY = "Neard Abstraction Library (NeardAL)" - -DESCRIPTION = "NeardAL is a library that provides a simple C API \ -to exchange data with NFC daemon (Neard)." - -HOMEPAGE = "https://github.com/connectivity/neardal" -SECTION = "libs" -LICENSE = "LGPLv2" - -DEPENDS = "glib-2.0 readline glib-2.0-native" - -LIC_FILES_CHKSUM = "file://COPYING;md5=6a6e689d19255cf0557f3fe7d7068212 \ - file://lib/neardal.h;endline=20;md5=a53e93aea9357387078ed217565c0a99" - -inherit autotools pkgconfig - -PACKAGES =+ "${PN}-tools ${PN}-tools-dbg" - -FILES:${PN}-tools = "${libexecdir}/ncl" -FILES:${PN}-tools-dbg += "${libexecdir}/.debug" - -RDEPENDS:${PN}-tools = "bash" diff --git a/recipes-connectivity/neardal/neardal/0001-neardal-ncl-fix-segfault-on-help-page-being-displaye.patch b/recipes-connectivity/neardal/neardal/0001-neardal-ncl-fix-segfault-on-help-page-being-displaye.patch deleted file mode 100644 index 596fe0579..000000000 --- a/recipes-connectivity/neardal/neardal/0001-neardal-ncl-fix-segfault-on-help-page-being-displaye.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 795308b2452ee617da4096914b53ba3a1142e3db Mon Sep 17 00:00:00 2001 -From: Matt Ranostay <matt.ranostay@konsulko.com> -Date: Fri, 6 Jul 2018 17:19:09 -0700 -Subject: [PATCH] neardal: ncl: fix segfault on help page being displayed - -LISTCMD_NAME is declared as a const char due to being defined in a -macro so g_strdup it to stop proceeding operations from segfaulting. - -Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com> - ---- - ncl/ncl.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ncl/ncl.c b/ncl/ncl.c -index 590d13b..f4165b7 100644 ---- a/ncl/ncl.c -+++ b/ncl/ncl.c -@@ -329,7 +329,7 @@ int main(int argc, char *argv[]) - g_io_channel_unref(gNclCtx.channel); - - if (show_help) -- ncl_exec(LISTCMD_NAME); -+ ncl_exec(g_strdup(LISTCMD_NAME)); - - rl_callback_handler_install(NCL_PROMPT, ncl_parse_line); - diff --git a/recipes-connectivity/neardal/neardal/0002-neardal-lib-fix-memory-corruption.patch b/recipes-connectivity/neardal/neardal/0002-neardal-lib-fix-memory-corruption.patch deleted file mode 100644 index d40d9a4fe..000000000 --- a/recipes-connectivity/neardal/neardal/0002-neardal-lib-fix-memory-corruption.patch +++ /dev/null @@ -1,58 +0,0 @@ -From ee6267f357b3d158f0a0e88460782e8b9d44274a Mon Sep 17 00:00:00 2001 -From: Raquel Medina <raquel.medina@konsulko.com> -Date: Fri, 4 Jan 2019 07:43:03 -0500 -Subject: [PATCH] neardal: lib: fix memory corruption - - The current commit fixes an invalid memory access - which manifests as a random segfault when executing - continuous tag read operations. - - The corruption happens when releasing the memory allocated to a - record: in the time between the memory being g_free'd and the - subsequent memset operation, the memory could have been reused by - some other process. And since memory allocation depends on - system-wide factors, it makes this bug hard to track. - - Tested using ACR122U reader and NTAG213 - tags on Automotive Grade Linux (flounder, - guppy and master branches) - -Signed-off-by: Raquel Medina <raquel.medina@konsulko.com> ---- - lib/neardal_record.c | 1 - - lib/neardal_tools.c | 5 ++++- - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/lib/neardal_record.c b/lib/neardal_record.c -index 669012c..cfed5e8 100644 ---- a/lib/neardal_record.c -+++ b/lib/neardal_record.c -@@ -31,7 +31,6 @@ void neardal_record_free(neardal_record *r) - { - g_return_if_fail(r); - neardal_g_strfreev((void **) r, &r->uriObjSize); -- memset(r, 0, sizeof(*r)); - } - - void neardal_free_record(neardal_record *record) \ -diff --git a/lib/neardal_tools.c b/lib/neardal_tools.c -index f0d6157..f307df6 100644 ---- a/lib/neardal_tools.c -+++ b/lib/neardal_tools.c -@@ -32,9 +32,12 @@ - void neardal_g_strfreev(void **array, void *end) - { - void **p = array; -- for (; (void *) p < end; p++) -+ for (; (void *) p < end; p++) { - g_free(*p); -+ *p = NULL; -+ } - g_free(array); -+ array = NULL; - } - - void neardal_g_variant_add_parsed(GVariant **v, const char *format, ...) --- -2.17.1 - diff --git a/recipes-connectivity/neardal/neardal/ncl.patch b/recipes-connectivity/neardal/neardal/ncl.patch deleted file mode 100644 index baef6ccaa..000000000 --- a/recipes-connectivity/neardal/neardal/ncl.patch +++ /dev/null @@ -1,25 +0,0 @@ -From eab402bae42c3ea5caa8d540b6702d39e56c84c1 Mon Sep 17 00:00:00 2001 -From: Oleg Zhurakivskyy <oleg.zhurakivskyy@intel.com> -Date: Tue, 10 Feb 2015 12:58:39 +0200 -Subject: [PATCH] build: Install ncl - -Signed-off-by: Oleg Zhurakivskyy <oleg.zhurakivskyy@intel.com> ---- - ncl/Makefile.am | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ncl/Makefile.am b/ncl/Makefile.am -index beda75b..c06742f 100644 ---- a/ncl/Makefile.am -+++ b/ncl/Makefile.am -@@ -1,6 +1,6 @@ - AM_CPPFLAGS = @gio_CFLAGS@ -I$(top_builddir)/lib -I$(top_srcdir)/lib - --noinst_PROGRAMS=ncl -+libexec_PROGRAMS = ncl - - ncl_SOURCES = \ - $(srcdir)/ncl.c $(srcdir)/ncl.h \ --- -2.1.0 - diff --git a/recipes-connectivity/neardal/neardal_0.14.bb b/recipes-connectivity/neardal/neardal_0.14.bb deleted file mode 100644 index f8634c468..000000000 --- a/recipes-connectivity/neardal/neardal_0.14.bb +++ /dev/null @@ -1,10 +0,0 @@ -require neardal.inc - -SRC_URI = "git://github.com/connectivity/neardal.git;protocol=https \ - file://ncl.patch \ - file://0001-neardal-ncl-fix-segfault-on-help-page-being-displaye.patch \ - file://0002-neardal-lib-fix-memory-corruption.patch \ - " -SRCREV = "fe0fa79c94e9a0f1c2cfa1f58b3acc9bdc7d5e13" - -S = "${WORKDIR}/git" diff --git a/recipes-connectivity/rtl-sdr/rtl-sdr_0.5.3.bb b/recipes-connectivity/rtl-sdr/rtl-sdr_0.5.3.bb index 66ca582cd..dd9b39337 100644 --- a/recipes-connectivity/rtl-sdr/rtl-sdr_0.5.3.bb +++ b/recipes-connectivity/rtl-sdr/rtl-sdr_0.5.3.bb @@ -24,9 +24,3 @@ do_configure:append() { # See: http://lists.openembedded.org/pipermail/openembedded-devel/2016-May/107456.html sed -i -e "s# -fdebug-prefix-map=.*##g;s# -fmacro-prefix-map=.*##g" librtlsdr.pc } - -do_install:append() { - install -D -m 0644 ${S}/rtl-sdr.rules ${D}${sysconfdir}/udev/rules.d/55-rtl-sdr.rules - sed -i 's/MODE:="0666"/GROUP="audio", MODE="0660", SECLABEL{smack}="*"/' \ - ${D}${sysconfdir}/udev/rules.d/55-rtl-sdr.rules -} |