Enable proper bluetooth MAC address on c1 devices
The approach here is to used bdaddr_read.c to read the MAC address (it's in a different format than ro.bt.bdaddr_path accepts) at /efs/imei/bt.txt and write it to /data/bdaddr and set ro.bt.bdaddr_path there. This approach was used with device/lge/thunderg and bdaddr_read.c was adapted from there.
This commit is contained in:
parent
7ccedad350
commit
d9414ffb28
28
bdaddr_read/Android.mk
Normal file
28
bdaddr_read/Android.mk
Normal file
@ -0,0 +1,28 @@
|
||||
# Copyright (C) 2010 Ricardo Cerqueira
|
||||
# Copyright (C) 2011 Pawit Pornkitprasan
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
LOCAL_PATH:= $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
|
||||
LOCAL_SRC_FILES := bdaddr_read.c
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := libcutils
|
||||
|
||||
LOCAL_MODULE := bdaddr_read
|
||||
|
||||
include $(BUILD_EXECUTABLE)
|
||||
|
54
bdaddr_read/bdaddr_read.c
Normal file
54
bdaddr_read/bdaddr_read.c
Normal file
@ -0,0 +1,54 @@
|
||||
#include <fcntl.h>
|
||||
#include <string.h>
|
||||
#include <cutils/properties.h>
|
||||
#include <cutils/log.h>
|
||||
|
||||
#define LOG_TAG "bdaddr"
|
||||
#define SAMSUNG_BDADDR_PATH "/efs/imei/bt.txt"
|
||||
#define BDADDR_PATH "/data/bdaddr"
|
||||
|
||||
/* Read bluetooth MAC from SAMSUNG_BDADDR_PATH (different format),
|
||||
* write it to BDADDR_PATH, and set ro.bt.bdaddr_path to BDADDR_PATH
|
||||
*
|
||||
* Adapted from bdaddr_read.c of thunderg
|
||||
*/
|
||||
|
||||
int main() {
|
||||
char tmpbdaddr[23]; // bt_macaddr:xxxxxxxxxxxx
|
||||
char bdaddr[18];
|
||||
int count;
|
||||
int fd;
|
||||
|
||||
fd = open(SAMSUNG_BDADDR_PATH, O_RDONLY);
|
||||
if(fd < 0) {
|
||||
fprintf(stderr, "open(%s) failed\n", SAMSUNG_BDADDR_PATH);
|
||||
LOGE("Can't open %s\n", SAMSUNG_BDADDR_PATH);
|
||||
return -1;
|
||||
}
|
||||
|
||||
count = read(fd, tmpbdaddr, sizeof(tmpbdaddr));
|
||||
if (count < 0) {
|
||||
fprintf(stderr, "read(%s) failed\n", SAMSUNG_BDADDR_PATH);
|
||||
LOGE("Can't read %s\n", SAMSUNG_BDADDR_PATH);
|
||||
return -1;
|
||||
}
|
||||
else if (count != sizeof(tmpbdaddr)) {
|
||||
fprintf(stderr, "read(%s) unexpected size %d\n", SAMSUNG_BDADDR_PATH, count);
|
||||
LOGE("Error reading %s (unexpected size %d)\n", SAMSUNG_BDADDR_PATH, count);
|
||||
return -1;
|
||||
}
|
||||
|
||||
count = sprintf(bdaddr, "%2.2s:%2.2s:%2.2s:%2.2s:%2.2s:%2.2s\0",
|
||||
tmpbdaddr+11,tmpbdaddr+13,tmpbdaddr+15,tmpbdaddr+17,tmpbdaddr+19,tmpbdaddr+21);
|
||||
|
||||
fd = open(BDADDR_PATH, O_WRONLY|O_CREAT|O_TRUNC, 00600|00060|00006);
|
||||
if (fd < 0) {
|
||||
fprintf(stderr, "open(%s) failed\n", BDADDR_PATH);
|
||||
LOGE("Can't open %s\n", BDADDR_PATH);
|
||||
return -2;
|
||||
}
|
||||
write(fd, bdaddr, 18);
|
||||
close(fd);
|
||||
property_set("ro.bt.bdaddr_path", BDADDR_PATH);
|
||||
return 0;
|
||||
}
|
@ -49,7 +49,8 @@ PRODUCT_PACKAGES := \
|
||||
libstagefrighthw \
|
||||
libexifa \
|
||||
libjpega \
|
||||
com.android.future.usb.accessory
|
||||
com.android.future.usb.accessory \
|
||||
bdaddr_read
|
||||
|
||||
# These are the hardware-specific configuration files
|
||||
PRODUCT_COPY_FILES := \
|
||||
|
9
init.rc
9
init.rc
@ -681,6 +681,15 @@ service bluetoothd /system/bin/bluetoothd -n
|
||||
group bluetooth net_bt_admin misc
|
||||
disabled
|
||||
|
||||
# bluetooth mac address
|
||||
service bdaddr /system/bin/bdaddr_read
|
||||
user root
|
||||
disabled
|
||||
oneshot
|
||||
|
||||
on property:init.svc.bootanim=running
|
||||
start bdaddr
|
||||
|
||||
service installd /system/bin/installd
|
||||
socket installd stream 600 system system
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user