Type A 公头 引脚定义
EDL 9008短接线
将设备关机,连接此短接线缆, 但不连接电脑USB口。
用 金属导线(比如 取卡针) 连接 绿色(D+) 与 黑色线 (GND)
再连接电脑USB口
3秒后, 断开 D+ 与 GND
设备就会进入 9008模式
Type A 公头 引脚定义
EDL 9008短接线
将设备关机,连接此短接线缆, 但不连接电脑USB口。
用 金属导线(比如 取卡针) 连接 绿色(D+) 与 黑色线 (GND)
再连接电脑USB口
3秒后, 断开 D+ 与 GND
设备就会进入 9008模式
默认情形,characteristic write是需要确认的。对端设备将发送确认消息过来,其他GATT流量才会继续。
为提升吞吐,可以用 write without response, 对端设备发出 notifications ,结合起来提升吞吐率
外围设备可以发出notification或者indication来通知中央设备,来进行读写。
indication从外围设备发出后,中央设备需要对其进行确认。虽然这个确认是蓝牙协议栈做出的,跟应用层没有关系,但这也会降低速度。
当Android系统对 indication确认后, 会回调应用层的 onCharacteristicChanged 方法。
如果是notification, 那么 Client 应该去 设置 Server 上的 Client Characteristic Configuration descriptor为 ENABLE_NOTIFICATION_VALUE。
如果是indication, 则应该设置为 ENABLE_INDICATION_VALUE
在Android SDK中,调用 BluetoothGatt#setCharacteristicNotification(BluetoothGattCharacteristic characteristic, boolean enable) 将enable 设置为 true, 就可以了, 对于 notifications 和 indication都这样处理。
gatt.setCharacteristicNotification(characteristic, true); ... UUID uuid = UUID.fromString("00002902-0000-1000-8000-00805f9b34fb"); BluetoothGattDescriptor descriptor = characteristic.getDescriptor(uuid); descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE); gatt.writeDescriptor(descriptor);
Indications and Notifications are a way for a GATT Client to subscribe to data provided by a GATT Server.
A Notification is an unacknowledged message or update while an Indication is an acknowledged message or update.
These Notifications and Indications are sent any time the relevant data in the GATT table on the GATT Server is updated. (You must “subscribe” to the data that you would like to be Notified or Indicated of) In a way Indications and Notifications are much like TCP and UDP packets. TCP requires that when data is sent, the receiver acknowledges that the data has been received by sending back an ACKnowledgement packet. UDP just sends off data without any concern whether it is actually confirmed to be received or not. In this sense Indications are akin to TCP and Notifications are akin to UDP.
开启
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
关闭
mBTAdapter = BluetoothAdapter.getDefaultAdapter(); mBTAdapter.disable();
获取已经配对的设备
mPairedDevices = mBTAdapter.getBondedDevices(); for (BluetoothDevice device : mPairedDevices) device.getName() + "\n" + device.getAddress();
var methodArr = DeviceUtil.class.getMethods(); for(var m in methodArr) { console.log(methodArr[m]); }
DeviceUtil
android.permission.MODIFY_PHONE_STATE
修改电话状态:开机,MMI等。 不包括打电话
此权限, 只能为系统应用 所获取。 第3方开发应用不能获得此权限
iccOpenLogicalChannel 需要此权限 或者 有运营商权限 (hasCarrierPrivileges)
android.permission.READ_PHONE_STATE
读取电话状态:包括移动网络信息,电话当前的状态
getSubscriberId 需要
1) READ_PRIVILEGED_PHONE_STATE
2) READ_PHONE_STATE
3) hasCarrierPrivileges()
4) 默认的短信应用
5) android.permission.USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER
getSimSerialNumber
1) READ_PRIVILEGED_PHONE_STATE
2) READ_PHONE_STATE
3) hasCarrierPrivileges
从 Android 10 开始,应用必须具有 READ_PRIVILEGED_PHONE_STATE 特许权限才能访问设备的不可重置标识符(包含 IMEI 和序列号)。
Android系统仅会向使用平台密钥进行签名的应用以及特权系统应用授予 READ_PRIVILEGED_PHONE_STATE
权限。
两点要求:
1)app使用平台签名
2) app是特权系统应用(放在 /system/priv-app目录?)
特许权限白名单,以向特权应用授予 READ_PRIVILEGED_PHONE_STATE
权限
如果应用是预加载(预装到系统)的特权应用,则需要获得在 AndroidManifest.xml 中声明的 READ_PRIVILEGED_PHONE_STATE
权限。此外,该应用还需要将此特许权限列入白名单。
特权应用是位于系统映像某个分区上 priv-app
目录下的系统应用。各 Android 版本中,该分区为:
/system
/system, /product, /vendor
/etc/permissions/priv-app
应该实际解析为 partition/etc/permissions/priv-app
早期版本中,设备制造商几乎无法控制可对特权应用授予哪些签名|特许权限。从 Android 8.0 开始,制造商必须在 /etc/permissions
目录下的系统配置 XML 文件中明确授予特许权限。从 Android 9 开始,实现人员必须明确授予或拒绝授予所有特许权限,否则设备将无法启动。
privapp-permissions.xml
文件只有在与特权应用位于同一分区时才能授予或拒绝授予该应用权限。例如,如果 /vendor
分区上的应用请求特许权限,则只能由同样位于 /vendor
上的 privapp-permissions.xml
文件来同意或拒绝该请求。
应用的权限白名单可列在位于 frameworks/base/etc/permissions
目录下的单个或多个 XML 文件中,如下所示:
/etc/permissions/privapp-permissions-OEM_NAME.xml
/etc/permissions/privapp-permissions-DEVICE_NAME.xml
对于如何组织内容,没有严格的规则。设备实现人员可以决定内容结构,只要 /system/priv-app
下的所有应用均列入白名单即可。例如,Google 针对由 Google 开发的所有特权应用提供了一个白名单,并建议使用以下组织方式:
/etc/permissions/privapp-permissions-platform.xml
中。/etc/permissions/privapp-permissions-google.xml
中。/etc/permissions/privapp-permissions-DEVICE_NAME.xml
。https://source.android.com/devices/tech/config/perms-whitelist?hl=zh-cn
public int checkPermission(String permission, int pid, int uid) {
….
am.checkPermission(permission, pid, uid);
https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/permission/PermissionManager.java
am.checkPermission(permission, pid, uid);
ActivityManagerService.checkPermission
com.android.server.am.ActivityManagerService
public static int checkComponentPermission(String permission, int uid,
int owningUid, boolean exported) {
….
https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
public int checkPermission(String permName, String pkgName, int userId) {
https://gowa.club/Android/Android%E7%9A%84%E6%9D%83%E9%99%90%E6%A3%80%E6%9F%A5%E8%BF%87%E7%A8%8B.html
https://lishuaiqi.top/2017/07/06/Permission3-checkPermissions/#1-3-checkPermission
Snapdragon Wear 1100: Cortex-A7 1.2G LTE Cat1 Modem 发布于2016年,没人用
Snapdragon Wear 1200: Cortex-A7 1.3G LTE M1/NB1 Modem 发布于2017年,也没人用
Snapdragon Wear 2100: 4核Cortex A7 (就是Qualcomm Technologies, Inc MSM8909W) 1.2G X5 Modem(Cat 4) 发布于2016年
Snapdragon Wear 2500: 4x ARM Cortex A7 , 其实也是8909w
Snapdragon Wear 3100: MSM8909w (Cortex A7*4 1.2G) X5 Modem(Cat4) 协处理器QCC 1100 发布于2018年
其中 MSM890w 来源于 发布于2014年9月9日的 Snapdragon 210(MSM8909),CPU和基带规格一致
Snapdragon Wear 3100: 来源于 SDM425 (Cortext A53) X5 Modem
华米智能手表2(Nexo) 参数:https://www.amazfit.com/cn/nexo.html
1.39 英寸 AMOLED 454*454分辨率
高通 Snapdragon Wear 2500 4核A7 1.1GHz
512MB LPDDR3
4G eMMC (用户可用空间约 1GB)
Bluetooth 4.2 + BLE
出门问问 TicWatch Pro 4G/LTE 参数
https://www.chumenwenwen.com/product/ticwatchpro-parameter.html
https://www.mobvoi.com/us/pages/ticwatchpro4g
Qualcomm® Snapdragon Wear™ 2100,在 /proc/cpuinfo里显示Qualcomm Technologies, Inc MSM8909W
显示屏1:AMOLED屏 400*400像素/287ppi
显示屏2:单色液晶屏
Ticwatch Pro 4G 2020版 型号:WF20066
Ticwatch Pro 2021 4G版 型号:
Ticwatch Pro 4G 2019 型号: WF11016
1. 手机上安装Wear OS By Google, 蓝牙配对激活手表
2. 手表上在待机界面下滑,调出设置界面, 设置→系统→关于→版本号(注意是下面的版本号,不是上面的版本),狂点,即可打开开发者模式
3. 设置→开发者选项,打开 ADB调试
4. PC上运行
adb reboot bootloader fastboot oem unlock
然后在手表上,用 音量键 (下面那个按钮) 选择 unlock, 然后用 电源键 (上面那个按钮) 选择确定。
5. 手表会重启,并恢复出厂设置,按照步骤1,重新激活手表
6. 下载 twrp
https://dl.twrp.me/catshark/twrp-3.5.0_9-0-catshark.img.html
7. 启动到recovery
adb reboot bootloader fastboot boot twrp-3.5.0_9-0-catshark.img
8. 下载Magisk v21.4
https://github.com/topjohnwu/Magisk/releases/download/v21.4/Magisk-v21.4.zip
9.
adb sideload Magisk-v21.4.zip
3GPP定义的频率范围分为FR1和FR2
FR1也就是Sub 6G, 低于6G Hz的频段 450 MHz ~ 6000 MHz
FR2 24.350GHz ~ 52.6 GHz
1. 700MHz频段(694~790MHz)
全球性使用的低频5G频段
2. L波段(1427~1518MHz)
所有国家和地区确定的新的全球波段
3. 2496 MHz – 2690 MHz
许多国家和地区确定的全球波段,但这频段已经给LTE使用,在中国这一频段分配了160MHz给中国移动。
2515-2575MHz、2635-2675MHz为新增频段
2575-2635MHz频段为重耕中国移动现有的TD-LTE(4G)频段
3300~3400MHz 欧美外的许多国家和地区确定的全球波段
C波段(3400~3600MHz) 所有国家和地区确定的全球波段, 中国这个频段分给了中国电信和中国联通
3.4-3.5 给中国电信
3.5-3.6 给中国联通
C波段(3600~3700MHz) 许多国家和地区确定的全球波段
4800~4990MHz 为亚太地区少数几个国家确定的新频段,在中国分配了100MHz给中国移动
n1 1.920-1.980 2.11-2.17
https://zhuanlan.zhihu.com/p/82704664
703-743/758-798MHz频段号为n28。(703MHz-748MHz/758MHz-803MHz的频段号为n28)
n1 重耕 2.1G
n41 重耕 2.6G
n78 新的 3.3g
mt7601u是ralink(mediatek) 2012年推出的一款usb接口 150 Mbps速率的802.11b/g/n无线网卡,主要规格:
嵌入式高性能32位risc微处理器
55nm CMOS工艺
高集成射频 1T1R模式
支持150MbpsPHY速率
集成高效开关调节器
紧凑型5mm×5mm QFN40L封装
Debian中只需要安装 firmware-misc-nonfree
apt install firmware-misc-nonfree
firmware-ralink现在由 firmware-misc-nonfree提供
重启后,即可以收到信号
OpenWRT编译配置
Kernel modules –> Wireless Drivers –> kmod-mt7601u
配置文件
/etc/config/wireless
config wifi-device 'radio1' option type 'mac80211' option path 'platform/101c0000.otg/usb1/1-1/1-1:1.0' option disabled '0' config wifi-iface 'default_radio1' option device 'radio1' option network 'wan' option mode 'sta' option ssid 'uplink' option encryption 'psk2' option key '12345678'
/etc/config/network
config interface 'wan' option proto 'dhcp'
ifconfig可以获取
但现在新的系统,默认安装iproute2包,没有ifconfig命令了
ifconfig命令,实际从
/sys/class/net/wwan0/statistics/rx_bytes /sys/class/net/wwan0/statistics/tx_bytes
这两个文件,获取的流量统计信息
wwan0是我的usb 4G网卡的名称