重启Usb蓝牙设备(PD虚拟机模拟插拔)
前言
小米pro的Hackintosh方案挺香的,用了也有8个月了,还是挺稳定的。
但是其中有两个很操蛋的问题:
- 内置蓝牙无法使用
- 无法驱动内置Wi-Fi
由于不想硬改,作出一些不可逆操作,所以以上问题均采用USB方案解决。
Wi-Fi解决方案也比较完美了,使用Comfast的CF-811AC可支持5G网络,搭配GitHub上的驱动使用,效果极佳。
蓝牙,当时随便在淘宝买了个比较mini的USB蓝牙(加搜黑苹果关键字),倒是能用,但睡眠唤醒(设备断电)之后(手动关闭亦是如此),会导致无法使用,但如果重新插拔就又能正常使用了。(可能是驱动问题)
所以为了让蓝牙正常的工作,而又不希望每次都进行物理插拔(一点都不geek),就诞生了现在的想法:
- 使用虚拟机模拟插拔!
正文
首先是会导致蓝牙翻车的情况有:
- 长时间的睡眠唤醒
- 手动关闭蓝牙(无法再打开)
睡眠唤醒的话,直接模拟插拔就OK。
而手动关闭蓝牙,会在重新插上的时候,系统会根据之前关闭的状态再一次把蓝牙设备关闭(关闭就翻车了),形成了死循环。
所以这时需要在系统里,将蓝牙开关打开;
可以使用blueutil(终端下的蓝牙工具)进行打开操作。(拒绝手动操作)
模拟插拔使用PD虚拟机,其SDK极其完善。(在.app/Contents/MacOS内的命令行工具)
代码
shell脚本的语法十分诡异,查了好久才能写出个判断、循环语句。(???)
- 将以上所有内容结合,最后得出以下结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
#!/bin/bash# 设置变量 program="/Applications/Parallels Desktop.app/Contents/MacOS/prlctl" vm="Windows 10" device="CSR8510 A10" vm_app="$HOME/Parallels/$vm.pvm/$vm.app"# 重置蓝牙开关(后台运行以缩短时间) {/usr/local/bin/blueutil -p 0 2> /dev/null/usr/local/bin/blueutil -p 1 2> /dev/null } &# 等待PD启动 start=false while true; dostatus_content=$("$program" status "$vm" 2>&1)if [[ "$status_content" =~ "Unable to connect to Parallels Service" ]]; thenif [ !$start ]; thenstart=trueopen "$vm_app"fiecho "Waiting PD Service Start..."sleep 0.5elif [[ "$status_content" =~ "$vm" ]]; thenbreakfi done# 获取VM状态 echo $status_content status=$(echo "$status_content"|awk '{print $NF}')[ "$status" == "suspended" -o "$status" == "stopped" -o "$status" == "paused" ] need_resume=$?# 开启VM if [ $need_resume -eq 0 ]; then"$program" resume "$vm" 2> /dev/null fiwhile true; dostatus_content=$("$program" status "$vm" 2>&1)if [[ "$status_content" =~ "resuming" ]]; thenecho "Waiting VM Resuming..."sleep 0.5elif [[ "$status_content" =~ "running" ]]; thenbreakfi done# 模拟USB插拔 "$program" set "$vm" --device-connect "$device" "$program" set "$vm" --device-disconnect "$device"# 根据操作前状态决定是否暂停VM if [ $need_resume -eq 0 ]; then"$program" pause "$vm" fi |
重启Usb蓝牙设备(PD虚拟机模拟插拔)相关推荐
- USB及手机平板设备插拔响应解决方案
USB及手机平板设备插拔响应解决方案 (一).基本原理:WM_DEVICECHANGE消息响应 一般WM_DEVICECHANGE只发给顶层窗口.你可以自己创建一个隐藏的顶层窗口来接收这个消息. (二 ...
- 插拔usb设备计算机管理无反应,插拔USB设备引起死机蓝屏0x000000FE分析解决措施...
我们操作电脑故障中最常见的那就是蓝屏,导致蓝屏的原因有很多,更新驱动.安装软件.系统补丁.甚至外接USB设备等等都会有可能导致蓝屏.今天介绍的蓝屏故障0x000000FE就是外接设备USB所引起的故障 ...
- C#监视USB设备插拔动作
参考:https://docs.microsoft.com/zh-cn/windows/desktop/DevIO/device-management-messages 1.编写USBMonitor处 ...
- 增加 addDataScheme(file) 才能收到SD卡插拔事件的原因分析 -- 浅析android事件过滤策略...
http://blog.csdn.net/silenceburn/article/details/6083375 =========================================== ...
- 模拟usb重新插拔_Android 10带来黑科技 检测手机USB接口是否有液体或者是否过热...
谷歌昨天正式发布Android 10手机操作系统,同时谷歌全系列三代Pixel智能手机均可升级到Android 10正式版,而参与Android beta测试项目的智能手机厂商也同时为旗下部分智能手机 ...
- 一插usb接口计算机就重启,电脑故障分析:主机一插USB设备就死机,故障原因令人很无语...
原标题:电脑故障分析:主机一插USB设备就死机,故障原因令人很无语 Hello大家好,我是兼容机之家的小牛! 最近有粉丝的电脑遇到一个奇怪的问题,一插USB设备大概率的死机,有时候电脑还会自动重启! ...
- 使用libusb检测USB设备插拔状态
libusb是一个提供USB设备访问的跨平台用户模式程序库.该项目最新网址:http://www.libusb.info, 支持主流的操作系统:Linux.Mac OS X. Windows.Open ...
- 关于iar加st-link,报出SWIM error [30200]错误,我自己处理的方法,usb重新插拔
关于iar加st-link,报出SWIM error [30200]错误,我自己处理的方法,usb重新插拔
- windows快捷键失效 - 重启无效 - 插拔键盘解决
被windows快捷键失效问题折磨了很久,快捷键都失效了,包括: windows + e windows + r windows + l 等等,尝试修复注册表,尝试设置"关闭Windows键 ...
- java 监控usb端口插拔_监控USB设备插拔
最近做了UKey加密中设计到USB设备. 因UKEy是用来加密和执行PC与项目间通信加密的介质.从作用范围来讲不是传统意义上U盘作为存储介质来使用.其实熟悉网银驱动DR应该了解.在网银系统安全上一个最 ...
最新文章
- paramiko监控 windows服务器 被监控服务器只需要安装openssh服务即可基于wmic完成大部分监控...
- python - DBUtils 连接池减少oracle数据库的连接数
- 为什么说 Java 中只有值传递?
- Linux疑难杂症解决方案100篇(十三)-TCP中的拥塞控制
- 在移动了用户数据时Android平台的路径设置
- 28个不得不看的经典编程算法!!
- JVM(一)史上最佳入门指南
- 攻防世界 适合做桌面_网络安全工程师教你:如何使用Kali Linux进行渗透测试与攻防实战...
- linux命令详解(arm交叉编译器)
- OPENSSL编程 第二十章 椭圆曲线
- c++中的list用法[转]
- mysql驱动包放在ecplise哪里_eclipse导入mysql jdbc驱动包的具体步骤及注意事项
- 使用MobileTerminal修改越狱后的root密码
- c语言程序求对称矩阵,C中使用CBLAS/LAPACK的对称矩阵求逆
- ae怎么卸载已经安装的插件_ae红巨人插件卸载教程!
- 高性能可扩展mysql(电商数据库设计构思)
- matlab 模拟电子仿真,基于MATLABSimulink的模拟电子电路仿真
- C++ 算术平均数及几何平均数
- 开学季,中学生用什么样护眼台灯好?中学生用护眼台灯排行
- 基于微信小程序的驾驶证模拟考试系统的设计与实现
热门文章
- windows网络和共享中心“查看基本网络信息并设置连接”为“未知”的解决方案...
- html搜索引擎关键词,如何通过JavaScript获取搜索引擎搜索关键词
- 360自动收录js代码如何添加
- 学到了林海峰,武沛齐讲的Day17-5 内置函数
- HDS F900装机小结
- 使用php语言制作水印
- 新版男神女神完整投票系统源码V5.5.21版本
- 二叉搜索树的删除操作详解,图文并茂,化繁为简
- vue+eleme upload 上传图片(含gif动图) canvas压缩,base64转blob对象
- 如何xp计算机每天定时关机,WindowsXP电脑可以设置定时关机方法