diff --git a/BoardConfig.mk b/BoardConfig.mk index 40efbb7..09cdaa1 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -85,5 +85,4 @@ BOARD_HOSTAPD_DRIVER := NL80211 BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE) BOARD_WPA_SUPPLICANT_DRIVER := NL80211 BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE) -WIFI_HIDL_UNIFIED_SUPPLICANT_SERVICE_RC_ENTRY := true WPA_SUPPLICANT_VERSION := VER_0_8_X diff --git a/device.mk b/device.mk index 1d6c9ea..4f5008e 100644 --- a/device.mk +++ b/device.mk @@ -274,16 +274,12 @@ $(call inherit-product, packages/modules/Virtualization/apex/product_packages.mk # Wifi PRODUCT_PACKAGES += \ com.android.hardware.wifi \ - hostapd \ + com.android.hardware.wifi.hostapd.rpi5 \ + com.android.hardware.wifi.supplicant.rpi5 \ hostapd_cli \ libwpa_client \ wificond \ - wpa_cli \ - wpa_supplicant \ - wpa_supplicant.conf - -PRODUCT_COPY_FILES += \ - hardware/broadcom/wlan/bcmdhd/config/wpa_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wpa_supplicant_overlay.conf + wpa_cli PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.wifi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.xml diff --git a/ramdisk/init.rpi5.rc b/ramdisk/init.rpi5.rc index 804ba8b..c076ea4 100644 --- a/ramdisk/init.rpi5.rc +++ b/ramdisk/init.rpi5.rc @@ -5,9 +5,3 @@ on init on fs mount_all /vendor/etc/fstab.rpi5 - -on post-fs-data - # Create the directories used by the Wireless subsystem - mkdir /data/vendor/wifi 0770 wifi wifi - mkdir /data/vendor/wifi/wpa 0770 wifi wifi - mkdir /data/vendor/wifi/wpa/sockets 0770 wifi wifi diff --git a/wifi/Android.bp b/wifi/Android.bp new file mode 100644 index 0000000..f07880c --- /dev/null +++ b/wifi/Android.bp @@ -0,0 +1,68 @@ +// Copyright (C) 2025 KonstaKANG +// +// SPDX-License-Identifier: Apache-2.0 + +prebuilt_etc { + name: "android.hardware.wifi.hostapd-service.rc", + src: "android.hardware.wifi.hostapd-service.rc", + installable: false, +} + +prebuilt_etc { + name: "android.hardware.wifi.supplicant-service.rc", + src: "android.hardware.wifi.supplicant-service.rc", + installable: false, +} + +prebuilt_etc { + name: "wpa_supplicant.conf.rpi", + src: ":wpa_supplicant_template.conf", + filename: "wpa_supplicant.conf", + relative_install_path: "wifi", + installable: false, +} + +prebuilt_etc { + name: "wpa_supplicant_overlay.conf", + src: "wpa_supplicant_overlay.conf", + relative_install_path: "wifi", + installable: false, +} + +apex { + name: "com.android.hardware.wifi.hostapd.rpi5", + manifest: "apex_manifest_hostapd.json", + file_contexts: "apex_file_contexts_hostapd", + key: "com.android.hardware.key", + certificate: ":com.android.hardware.certificate", + updatable: false, + vendor: true, + + binaries: [ + "//external/wpa_supplicant_8/wpa_supplicant/wpa_supplicant:hostapd", + ], + prebuilts: [ + "android.hardware.wifi.hostapd-service.rc", + "android.hardware.wifi.hostapd.xml.prebuilt", + ], +} + +apex { + name: "com.android.hardware.wifi.supplicant.rpi5", + manifest: "apex_manifest_supplicant.json", + file_contexts: "apex_file_contexts_supplicant", + key: "com.android.hardware.key", + certificate: ":com.android.hardware.certificate", + updatable: false, + vendor: true, + + binaries: [ + "//external/wpa_supplicant_8/wpa_supplicant/wpa_supplicant:wpa_supplicant", + ], + prebuilts: [ + "android.hardware.wifi.supplicant-service.rc", + "android.hardware.wifi.supplicant.xml.prebuilt", + "wpa_supplicant.conf.rpi", + "wpa_supplicant_overlay.conf", + ], +} diff --git a/wifi/android.hardware.wifi.hostapd-service.rc b/wifi/android.hardware.wifi.hostapd-service.rc new file mode 100644 index 0000000..f23c77b --- /dev/null +++ b/wifi/android.hardware.wifi.hostapd-service.rc @@ -0,0 +1,13 @@ +on property:apex.all.ready=true + mkdir /data/vendor/wifi 0770 wifi wifi + mkdir /data/vendor/wifi/hostapd 0770 wifi wifi + mkdir /data/vendor/wifi/hostapd/sockets 0770 wifi wifi + +service hostapd /apex/com.android.hardware.wifi.hostapd.rpi5/bin/hw/hostapd + interface aidl android.hardware.wifi.hostapd.IHostapd/default + class main + capabilities NET_ADMIN NET_RAW + user wifi + group wifi net_raw net_admin + disabled + oneshot diff --git a/wifi/android.hardware.wifi.supplicant-service.rc b/wifi/android.hardware.wifi.supplicant-service.rc new file mode 100644 index 0000000..fa9d18f --- /dev/null +++ b/wifi/android.hardware.wifi.supplicant-service.rc @@ -0,0 +1,18 @@ +on property:apex.all.ready=true + mkdir /data/vendor/wifi 0770 wifi wifi + mkdir /data/vendor/wifi/wpa 0770 wifi wifi + mkdir /data/vendor/wifi/wpa/sockets 0770 wifi wifi + +service wpa_supplicant /apex/com.android.hardware.wifi.supplicant.rpi5/bin/hw/wpa_supplicant \ + -O/data/vendor/wifi/wpa/sockets -dd \ + -g@android:wpa_wlan0 + # we will start as root and wpa_supplicant will switch to user wifi + # after setting up the capabilities required for WEXT + # user wifi + # group wifi inet keystore + interface aidl android.hardware.wifi.supplicant.ISupplicant/default + class main + socket wpa_wlan0 dgram 660 wifi wifi + user root + disabled + oneshot diff --git a/wifi/apex_file_contexts_hostapd b/wifi/apex_file_contexts_hostapd new file mode 100644 index 0000000..aff5bfc --- /dev/null +++ b/wifi/apex_file_contexts_hostapd @@ -0,0 +1,3 @@ +(/.*)? u:object_r:vendor_file:s0 +/etc(/.*)? u:object_r:vendor_configs_file:s0 +/bin/hw/hostapd u:object_r:hal_wifi_hostapd_default_exec:s0 diff --git a/wifi/apex_file_contexts_supplicant b/wifi/apex_file_contexts_supplicant new file mode 100644 index 0000000..48e4be6 --- /dev/null +++ b/wifi/apex_file_contexts_supplicant @@ -0,0 +1,3 @@ +(/.*)? u:object_r:vendor_file:s0 +/etc(/.*)? u:object_r:vendor_configs_file:s0 +/bin/hw/wpa_supplicant u:object_r:hal_wifi_supplicant_default_exec:s0 diff --git a/wifi/apex_manifest_hostapd.json b/wifi/apex_manifest_hostapd.json new file mode 100644 index 0000000..868e5e5 --- /dev/null +++ b/wifi/apex_manifest_hostapd.json @@ -0,0 +1,4 @@ +{ + "name": "com.android.hardware.wifi.hostapd.rpi5", + "version": 1 +} diff --git a/wifi/apex_manifest_supplicant.json b/wifi/apex_manifest_supplicant.json new file mode 100644 index 0000000..208a7cc --- /dev/null +++ b/wifi/apex_manifest_supplicant.json @@ -0,0 +1,4 @@ +{ + "name": "com.android.hardware.wifi.supplicant.rpi5", + "version": 1 +} diff --git a/wifi/wpa_supplicant_overlay.conf b/wifi/wpa_supplicant_overlay.conf new file mode 100644 index 0000000..740792b --- /dev/null +++ b/wifi/wpa_supplicant_overlay.conf @@ -0,0 +1,5 @@ +disable_scan_offload=1 +wowlan_triggers=any +p2p_disabled=1 +filter_rssi=-75 +no_ctrl_interface= \ No newline at end of file