Macbook pro/air 2013 late -2014 使用转接卡更换NVME SSD休眠不醒问题的解决办法

2023-05-16

 

2021年1月更新, 发现升级 big sur 11.1之后,固件版本变成了429.0.0.0, 睡眠问题又回来了,每次都睡死,不醒。 于是我按老办法,把mbp114的nvme驱动刷到mpb111的429里,刷完之后,结果,睡眠问题又解决了,真是服了苹果,搞来搞去的。办法就是用ch341a来刷,参考最下面的说明。把文件换成bigsur的nvme驱动就好了。

 

---------我是分隔线----

 

Big Sur 出来了,有网友说需要刷回原版固件版本方可升级,我试了一下,升级中间会黑屏死机重启多次, 然后刷回原版也是如此,

但是多次之后,也可以升级到Big Sur,据说下面的跟贴说,原盘的话会升到一个新的固件版本, 我确认了一下我的版本还是153.0.0.0.0, 看来是没有升级成功了,我的硬盘不是原装的,按之前的研究,这个无法升级是合理的,刷回的旧版,休眠问题回来了,mode 25 的情况下,一会就会睡死了。

搞了一个原装的APPLE的SSD, 把Firmware的版本升到了427.0.0.0.0,  休眠问题消失了,不会再睡死了,感谢苹果。

测试了2013-2014的两个MBP都是同样的结果。

据说不需要原装的SSD也有可能升级固件成功,但是不同的牌子不一样的,有机率失败,大家可以试试,欢迎留言返馈。

本文章的原来使用ch341a来夹芯片刷bios的办法可以废弃了,!!!大家只需要把固件升到427就好了!!!!!

同时已经刷过BIOS的网友,如果无法升级固件,请尝试使用编程器恢复原来的没有修改的固件。如果你没有备份的话,又无法升级的话,这个有就比较悲剧了,我也不知道怎么办了,只能试试换个ssd看看,欢迎大家留言交流。

 

 下面介绍,如何升级Bigsur的固件,不使用下面的办法,可以使用全新安装或升级,也是可以刷到固件的。

 

 

sudo /usr/sbin/bless -firmware Desktop/Big\ Sur/MBP111.scap --verbose --recovery

新的文件在安装的app的下面的目录:

先mount一下:

 Install\ macOS\ Big\ Sur.app/Contents/SharedSupport/SharedSupport.dmg.

然后可以在下面的地方找到 一个zip文件:

 /Volumes/Shared\ Support/com_apple_MobileAsset_MacSoftwareUpdate/ee3ab6c04234b360dd8fca93c0ae49f957bf0843.zip 

解开这个zip,  就得到了新的firmware了:

ee3ab6c04234b360dd8fca93c0ae49f957bf0843/AssetData/boot/EFI/EFIPayloads

我的2013 late mbp 15, 所以是MBP111.scap 

2014的mbp是 MBP112.scap 

执行上面的bless的命令,然后关机(不是重启) ,然后马上开机。

这个据说只能在原始的固件才行,修改过补丁的不行。

然后就开机的时候会看到logo和进度条,1-2分钟就可以升级完, 升级完会自动重启一下,然后就进入系统了。

 

测试了手上另一台mbp 15 2014年的,是原装的硬盘,成功把固件升级到了427.0.0.0

admin@ADMINdeMacBook-Pro ~ % sudo /usr/sbin/bless -firmware ~/Downloads/MBP112.scap --verbose --recovery 
EFI found at IODeviceTree:/efi
Will need to copy 8523776 bytes to EFI system partition
No auxiliary booter partition required
System partition found
Preferred system partition found: disk0s1
Returning booter information dictionary:
{
    "Auxiliary Partitions" =     (
    );
    "Data Partitions" =     (
        disk1s5
    );
    "Preboot Volumes" =     (
        disk1s2
    );
    "System Partitions" =     (
        disk0s1
    );
}
Mounting at /Volumes/bless.fY7x
Executing "/sbin/mount"
Returned 0
Creating /Volumes/bless.fY7x/EFI/APPLE/FIRMWARE if needed
Deleting previous contents of /Volumes/bless.fY7x/EFI/APPLE/FIRMWARE
Deleting /Volumes/bless.fY7x/EFI/APPLE/FIRMWARE/MBP112.scap (8520304 bytes)
Opened dest at /Volumes/bless.fY7x/EFI/APPLE/FIRMWARE/MBP112.scap for writing
preallocation not supported on this filesystem for /Volumes/bless.fY7x/EFI/APPLE/FIRMWARE/MBP112.scap

/Volumes/bless.fY7x/EFI/APPLE/FIRMWARE/MBP112.scap created successfully
No auxiliary booter partition required
System partition found
Preferred system partition found: disk0s1
Returning booter information dictionary:
{
    "Auxiliary Partitions" =     (
    );
    "Data Partitions" =     (
        disk1s1
    );
    "Preboot Volumes" =     (
        disk1s2
    );
    "System Partitions" =     (
        disk0s1
    );
}
Bad path for boot item: /Users/admin/Downloads/MBP112.scap
Relative path of /Volumes/bless.fY7x/EFI/APPLE/FIRMWARE/MBP112.scap is \EFI\APPLE\FIRMWARE\MBP112.scap
IOMedia disk0s1 has UUID 492ABF07-D827-447A-A506-DA52C7BCA4CF
Executing "/sbin/umount"
Returned 0
Write to RTC: 0
Setting EFI NVRAM:
{
    "efi-apple-recovery" = "<array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>492ABF07-D827-447A-A506-DA52C7BCA4CF</string></dict></dict><key>BLLastBSDName</key><string>disk0s1</string></dict><dict><key>IOEFIDevicePathType</key><string>MediaFilePath</string><key>Path</key><string>\\EFI\\APPLE\\FIRMWARE\\MBP112.scap</string></dict></array>";
}

稍后试一下非原装的升级。

新的Big sur的Macbook pro 的固件我上传了在 https://download.csdn.net/download/aerror/13119980

-----------上面这些更新于-2020.11.17------  我是分割线 ---------------以下是原文(已废弃,不建议采用),升级big sur就好了,不需要再用编程器这样修改了。 --------- 

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

1. 手上512GMBP 2013 late 差不多满了,因为穷,所以在淘宝上买了一个NVME转Macbook pcie,然后再买一个NVME 2T的硬盘

2. NVME因为需要最新的Firmware Rom支持,所以必须使用原装的硬盘(必须原装)安装Mac 14以上,我安装了14.5.要不然识别不出来新安装的NVME硬盘

3. 买之前就知道是会有休眠问题的,问了卖家推荐了一些型号说不会的,其中我是买了推荐的HP EX950 2T, 比intel足足贵了700元,结果然并卵,安装完系统测试了一下,发现也是有休眠问题的。测试办法如下:

  

pmset -a hibernatemode 25
pmset sleepnow 

   然后合上盖子,过上几分钟,发现就睡死了。根本醒不过来了。必须强行关机再开机, 确认了多次如此。 估计有人说2013 late的机子可以,可能是默认的hibernatemode 3 ,或者设置了hibernatemode 0, 要不就是插着电源。

   同时还有副作用,就是开机会黑屏过10-20秒才看到苹果和进度条,开机速度超慢。

4. 遍查了整个网络,找到了以下的资料:

Background

  • 2013-2014 MacBooks use a non-standard connector (12+16 pins) for the stock SSD that uses PCIe AHCI (OEM drives supposedly based on the Samsung XP941 or SM951)
  • Fortunately, there are a number of M.2 NVMe drives and an adapter available that allow for SSD upgrades in these MacBooks
  • macOS 10.13 “High Sierra” introduced boot support for NVMe drives that use 512 byte sectors (or LBAs) which opens up a variety of NVMe SSD upgrade options (Samsung, Intel, etc)
  • Unfortunately, the stock EFI firmware (or system ROM) in these MacBook comes with an NVMe driver that prevents the MacBook from waking up from hibernation (or deep sleep)
  • To address this hibernation issue, the system ROM can either be modified, or hibernation can be disabled on the MacBook by executing “pmset -a standby 0”
  • 2015 MacBooks can also be upgraded using this guide and do not require firmware modifications or other changes as they presumably all use PCIe NVMe SSDs (like the Samsung PM951 and newer)
  • This guide has been successfully tested with a 13” MacBook Pro Late-2013 and an 11” MacBook Air Mid-2013

      证实了,只要是2013-2014的Macbook都会有问题的,任何型号的NVME转接的SSD都有问题,没有例外,原因是固件中的NVME驱动有问题会令到无法唤醒. 

     参考URLhttps://forums.macrumors.com/threads/upgrading-2013-2014-macbook-pro-ssd-to-m-2-nvme.2034976/page-87

     解决办法也给出了,就是使用2015的固件中NVME替换2013-2014的固件驱动,GUID为51116915-C34B-4D8E-86DB-6A70F2E60DAA, 然后使用编程器去先从MX25L6406EMI这芯片读出原来的Rom, 然后从Macos的安装包找出2015的NVME替换好了,再刷回MX25L6406EMI。

    文中CH341A编程器淘宝有卖,好便宜,只需要20-30元不等,但是它是使用一个SPI to J6100 adapter,这个查了一下发现淘宝没有,只有ebay上有,韩国卖家,几百块,发货时间还要超长。。。

 

5.   既然升级系统的时候可以升级固件,那么说明使用软件来刷也是可行的,就是前几天发的文章了,

  

1. get the FirmwareUpdate.pkg file from the OS installer app's installESD.dmg
2. extract the contents using pkgutil --expand /path/to/FirmwareUpdate.pkg <path somewhere else>/FirmwareUpdate
3. in terminal, cd to the Scripts directory inside the expanded FirmwareUpdate pkg directory.
4. with Scripts as your working directory, run these 2 commands, then reboot:
sudo /usr/libexec/FirmwareUpdateLauncher -p "$PWD/Tools"
sudo /usr/libexec/efiupdater -p "$PWD/Tools/EFIPayloads"
5. at the reboot, firmware will be updated if there are any updates to be applied.

测试了一下,固件是可以刷的,但是必须满足以下所有条件:

1. 使用原装的硬盘

2. 原装的固件

3.固件版本必须大于等于当前的固件的版本

efiupdate只是把文件复制到efi分,然后设置了一些nvram的参数,然后是固件启动的时候从efi的指定地方来更新,但是很明显上面的测试表明了,这个固件的更新之前是有校验的上面三个条件都满足才给刷的,修改了的固件刷不了。

https://apple.stackexchange.com/questions/287644/do-macbooks-support-nvme-ssd-drives-via-the-use-of-a-sintech-adapter

 这里人下 Y.H. wong说

 

hat guide on MacRumors is really useful. I recently upgraded a 2014 MBPr board using most of its instructions, and it still works. Changes made: 1. No need for kapton tape. 2. I used a Sintech ST-NGFF2013-B. 3. I didn't turn off hibernation with pmset, I didn't buy a CH341A programmer either. I just looked up the MBP112 and MBP114 firmwares, transplanted the NVMe driver from MBP114 to MBP112, and flashed my Mac with /usr/libexec/efiupdater -p /path/to/EFIPayloads --force-update. Wakeup problem completely gone. – Y.H Wong Nov 4 '18 at 13:00
@Y.HWong: Sounds like the easiest way to flash the firmware. Can you tell in more detail how you proceeded? May be even join the discussion at MacRumors. Thanks a lot! – Bernhard Fürst Feb 6 at 19:20

不知道他是怎么做到的,始终无法把修改后的固件成功刷上去,有点怀疑他可能是没有测试清楚 。

 

6.  没有办法了,看到intel是有一个fpt.efi(Flash proramming tool)的,可以在Uefi的shell下执行来刷UEFI的BIOS/固件,但是只是对于PC的,工具和文档参考https://github.com/holoto/efi_shell_flash_bios/

     于是安装了refind,然后从clover那里找了一个shellx64.efi放到/EFI/tools/shell.efi下,然后下载了fpt.efi也放到这里,然后运气并不好,fpt.efi无法识别SPI的设备. 

     但是发现安装refind解决了一些问题:

      1.启动不会黑屏20秒左右了,马上就可以启动看到启动菜单,把超时设置为0的话,马上就可以看到苹果和进度条了。

     2.唤醒虽然还是有问题,但是表现有些不一样,唤醒的时候不会直接黑屏卡死,而是可以看到refind的启动菜单,然后自动重启,然后再重启开机,这个其实也还好,至少不需要手动长按关机再开机那么烦了。

       这个两个问题的解决,我认为问题应该不只是固件的问题,还和启动的efi有关系,然后翻查了一下refind的文档,发现它在原装的硬件中唤醒表现竟然是和我的机器的表现是一致的,就是唤醒变成了自动重启两次。

       新的希望又有了,看来唤醒这个只是refind没有做好,在白苹果还有一个选择就是refit这个工具,虽然很久没有更新了,但是工作方式有些不同,它是直接安装在系统盘的根目录的,而不是EFI的分区中,也没有使用nvram的变量。 据查在白苹里使用它是没有休眼唤醒的问题的。于是把refind删除了,安装了refit,  然而也是没有走到狗屎运. :(

7. 好好的查了一下mx25L6406EMI-12G的datasheet, 知道它是8 SOP封装的,问了做硬件的朋友,他说其实可以焊几条线来用刷,但是不想动手电烙铁,上次拆硬盘的bios是拆得满头大汗,折腾许久,最后竟然还没有成功,所以有点信心不足. 于是在淘宝上再试试找那个连接线,也是没有找到,但是发现有一个sop 8的夹子,研究一下买家的评论图片,都是用来刷路由器,刷笔记本的,看来是一个可行,价格便宜又可以快速达成的办法。 于是拍了ch341a+夹子+一堆转接1.8v之类的一整套回来,花了50元左右,第二天就收到了。

8. 买ch341a没有说明书, 我汗,看到有一个跳线写着3.3V5V的,从https://static6.arrow.com/aropdfconversion/cb5c77c505104f4e4cad1b3667abe88327b4ee44/mx25l6406e203v2064mb20v1.9.pdf

先下载datasheet确认了这个mx25L6406EMI是3.3V的,然后小心翼翼用万用表量了一个8号脚是3.3V的, 然后把跳线插在编程那个两个脚上(板上好在有提示),

夹子夹了第一次没有夹好,读不出来,夹第二次好了,测试一下,可以读, 一切正常, 两个红灯都亮起来了,如图:

 

 

按上面的https://forums.macrumors.com/threads/upgrading-2013-2014-macbook-pro-ssd-to-m-2-nvme.2034976/page-87

一步一步都做,最后成功刷入固件。 开机问题好了,使用pmset -a hibernatemode 25来测试,唤醒问题也好了。

一切完美解决。

 

应要求补充一下翻译过来的操作步骤:

1. 打开后盖,主板上找mx25L6406EMI-12G这个芯片,是8只脚的,写了mx25L6406EMI这些字在上面的, 照图夹好BIOS, 红线对齐第一只脚(芯片上有一个圆点标记的)

 

2. 安装flash rom 工具,使用brew安装 

   

 brew install flashrom  

3. 开始读出原来的 bios ROM ,这个大小是8M的。输入以下命令:

 

flashrom -p ch341a_spi -r dump1.bin -c "MX25L6406E/MX25L6408E"

保险起见,执行3次,每次改改名,如下:

flashrom -p ch341a_spi -r dump2.bin -c "MX25L6406E/MX25L6408E"
flashrom -p ch341a_spi -r dump3.bin -c "MX25L6406E/MX25L6408E"

然后可以md5看看hash是不是一致的

 

md5 *.bin

要是读不出,或者是三次不一致,应该是没有夹好,重新夹一下。

在读数据的时候,这个ch341a的红灯会亮起来

 

4. 从升级/安装包解压出2015的MBP固件中的NVME驱动

    2013-2014 MacBook Pro (MacBookPro11,1),  用MacBookPro11,4 的 firmware

    2013-2014 MacBook Air (MacBookAir6,1),用 MacBookAir7,1的 firmware

 

 4.1 双击装载 InstallESD.dmg , 在macOS安装包的Contents/SharedSupport目录下.

    4.2 在InstallESD.dmg image, 找到 Packages/FirmwareUpdate.pkg 这个安装包

 

   4.3 用Pacifist或The Archive Browser 打开 the FirmwareUpdate.pkg 

 4.4 打开Scripts

  

4.5  从Tools/EFIPayloads 这里解压合适的firmware. 

MBA71_0177_B00.fd  是2015 MacBook Air   

MBP114_0183_B00.fd  是 2015 MacBook Pro

  4.6 上面的操作使用命令行也是可以,我是使用命令行来操作的

  

xar -x Packages/FirmwareUpdate.pkg
cat Scripts | cpio -i 

5. 修改dump1.bin 中的NVME驱动

    5.1 用UEFITool 打开2015的固件,找到这个驱动,有查找菜单的,找GUID为 51116915-C34B-4D8E-86DB-6A70F2E60DAA 的就是了。   

5.2 右键  “Extract as is…” 把2015的驱动保存下来.

5.3 使用5.2这时保存下来的驱动去替换dump下来的rom里的nvme驱动,也是定位那个GUID,然后右键 "replace aS IS ...."

5.4 替换的动作可以在UEFITool的界面如下图看到,保存这个文件为MBA71_0117_B00-Mod.rom ,

5.5 可以再次打开这个修改后的文件,可以对比一下这个rom的驱动和2015的firmware中的驱动的信息是不是一致的。

如果一致的,那么你这一步成功修改了你机器定制的rom了。

 

6. 使用flashrom 把修改后的rom写入bios芯片里, flashrom写完之后会自己校验的。

 flashrom -p ch341a_spi -w MBA71_0117_B00-Mod.rom -c "MX25L6406E/MX25L6408E"

 

写完之后,拔出USB的ch341a编程,夹子松开移走,开机,应该一切都是完美的了,可以看到开机马上就看到进度条了,而不是原来的卡上个几十秒,可以使用上面说的方法测试休眠唤醒。

祝好运.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Macbook pro/air 2013 late -2014 使用转接卡更换NVME SSD休眠不醒问题的解决办法 的相关文章

  • Adobe Air mobile - 使用 SkinClass 允许滚动时,softKeyboardType 不起作用?

    我正在尝试将 softKeyboardType 设置为电子邮件 但当我使用 SkinClass spark skins mobile TextAreaSkin 时 它不会改变它 但当我脱掉 SkinClass spark skins mob
  • iPad Pro 图标和启动图像

    我正在开发一个基于 adobe air 的 iOS 应用程序 我需要知道最近为 iPad Pro 添加的资源的名称 启动图像 2048 x 2732 和图标 167x167 不幸的是 根据以前的名字很难猜出他们的名字 我找到 电子邮件受保护
  • 闪存记录 API

    谁能为 Flash AIR Flex 推荐一个好的 AS3 日志记录 API 除了编码事件之外 我还需要一些东西来捕获和记录鼠标和键盘事件 最好是有详细记录 支持的东西 提前致谢 我一直在使用霹雳 http code google com
  • 如何在 Android/Black berry 的 Air 中打开 pdf

    我想在 Android Black berry 的 Air 中打开 pdf 我怎么做到这一点 我使用AIR 2 6 IDE是Flash Builder 4 5 StageWebView http help adobe com en US a
  • 适用于 Android 应用内计费的 Air Native 扩展

    我正在尝试设置本机扩展以通过空中应用程序处理应用内计费 我可以向市场发送购买请求 但无法收到回复 我已经追踪到创建的 AndroidManifest xml 文件 为了在 Java 中执行此操作 您需要引用特定的类 但是当我通过 Flash
  • 如何修复“未找到初始内容”错误?

    在客户端的一些代码上使用 Flash Builder 4 6 单击调试 也尝试运行 并收到此错误 Process terminated unexpectedly initial content not found Launch comman
  • 如何从 Flex - AIR 执行 ping 操作?

    我很无聊 因为我的开发服务器宕机了 我正在运行命令提示符来无限期地 ping 服务器 这样我就能看到它们何时停止超时 并知道我可以再次工作 与此同时 我想制作一个 Air 应用程序来为我做这件事 这样我就可以让它发出鸣叫声或警报 或者在它开
  • 适用于 Android 的 Adob​​e AIR 上的无引脚 OAuth

    我在 Adob e AIR for Desktop iOS 上使用了无引脚 OAuth 但在 Android 上则不行 由于某种原因 我们没有得到 oauth verifier 其中包含 Android 设备上 StageWebView 中
  • 在 AIR 应用程序安装屏幕上显示图标

    是否可以在 AIR 应用程序安装屏幕上显示图标 我下载了一个 AIR 应用程序 我很惊讶地在第二个安装屏幕上看到了一个图标 当您购买 SSL 证书并使用该证书构建 Air 应用程序时 安装过程中会显示此图标
  • 保存下载但不带文件引用

    无论如何 是否可以使用 URLLoader 下载文件 然后将其保存到磁盘而不使用文件引用或任何使用对话框的内容 这是我拥有但不起作用的 public function onDownloadComplete e Event void Down
  • Adobe AIR - 带图像的自定义预加载器

    Folks 我设计了一个Adobe AIR应用 我想展示一些preloader在它打开之前 任何人都可以指导我的教程preloader 专门针对 AIR或者任何已经内置的 Thanks 借助 AIR 我可以想出几种方法来实现这一目标 1 使
  • AS3 fileStream出现将文件读入内存

    我正在编写一个流程 用户需要选择一个远远超出其可用 RAM 的文件 并将该文件分成小块 用于上传 我能够创建对所述文件的 File 引用 但是当我尝试将其传递给 fileStream 时 它似乎尝试在对其进行操作之前尝试将其读入内存 有没有
  • 确认()对话框中是/否按钮而不是确定/取消?

    In an Adobe AIR HTML JS app is it possible to display Yes No buttons instead of OK Cancel in a confirm dialog 任何可以与webki
  • 如何确定应用程序是作为移动应用程序还是桌面应用程序运行?

    我怎样才能知道当前的应用程序类型是什么 即它是在移动设备上运行还是作为桌面 Air 应用程序运行 我试过这个 if FlexGlobals topLevelApplicatoin as WindowedApplication desktop
  • 如何在非调试模式下获取 Adob​​e AIR 全局运行时错误的堆栈跟踪?

    新版本的AIR使我们能够全局捕获运行时错误并处理它们 问题是 除了错误 ID 错误消息和名称之外 它没有堆栈跟踪或任何有关错误的有用信息 例如 它可能告诉我发生了空指针异常 但它不会告诉我在哪里 哪个方法或任何事情 运行时的调试版本为我们提
  • Adobe Air Mobile 为什么启动视频 stageVideo 时舞台会闪烁?

    我正在尝试使用 stageVideo 在 Android 平板电脑上播放视频 但每当我单击播放并将视频添加到舞台时 孔应用程序都会闪烁 然后视频会添加到舞台 然后视频开始全部像素化 然后它消失并开始正常播放 只需跳跃几次 我想知道什么情况会
  • 在 Adob​​e Air 中访问 iframe 的内容

    我在弄清楚如何访问 Air 中 iframe 中的内容时遇到了很多麻烦 这是我一直在测试的一些示例 jquery 代码 document ready function frame ready function air trace frame
  • 从 Air Native 扩展返回结构

    是否可以从本机代码返回结构 返回 int 或 boolean 相对简单 但是如何将更复杂的结构返回给动作脚本 您可以返回任何可以在本机代码中表示为 FREObject 的对象 这实际上包括任何 Actionscript 类或 Actions
  • 如何将 C# 与 AIR 结合使用?

    我在制作 Flex 网站方面有一些基本经验 但我认为 Flex 在制作桌面 AIR 应用程序方面更有用 无论如何 我想知道是否至少可以将 C 与 Actionscript AIR 一起使用 我找不到任何这方面的例子 另外 我可以在 Flex
  • Adobe Air 与 Flash Player 10.1 运行时

    Adobe Flash Player 是一个浏览器 插件提供的优势 用户和内容创作者 浏览器 包括能够 在浏览器中交付 RIA Adobe AIR 融合了最初的技术 在 Flash Player 中开发并启用 丰富的互联网应用 桌面 Ado

随机推荐

  • 关于c语言中printf的几个问题

    问题在执行下列代码时发现的 int main int a 61 1 float b 61 1 0 float c 61 a 10 printf 34 d 34 int b printf 34 d 34 b 问题一 为什么不一样啊 用 d输出
  • 北斗定位与GPS定位的区别

    欢迎来到东用小知识课堂 xff0c 每天学习一分钟 xff0c 让你紧跟时代 xff0c 扩充自己 xff0c 成为大佬不是梦 xff01 1 覆盖范围 xff1a 北斗定位系统是覆盖中国本土的区域导航系统 覆盖范围东经约70 一140 x
  • 污水处理远程监控系统解决方案

    一 行业背景 随着我国科技和经济的发展 xff0c 近年来工厂数量日益增多 xff0c 而生产所带来的工业垃圾及污水就是一个重要的环境污染问题 xff0c 部分工厂甚至会在监管部门的监控死角下偷偷进行污水排放 xff0c 对周围水质造成严重
  • 5G工业路由器安全性怎么样?工业路由器的特点

    路由器 xff0c 本身就是一个具有相当大潜力的网络通信设备 xff0c 即使再是网络小白的用户 xff0c 可能也知道路由器是家中用于发布无线网络的设备 xff0c 如果深入了解的话 xff0c 其作用和发展会让人大为感慨 相信很多用户也
  • 路由器有防火墙?工业路由器的那些安全防护

    想要网络安全光是电脑装了杀毒软件可不行 xff0c 如果一个企业或者大型工厂一旦因为网络防护疏忽 xff0c 那么丢失数据信息所造成的损失是无法估量的 xff0c 所以企业及工厂网络通信及数据传输所使用的路由器一般都是工业级的 xff0c
  • Cat.1和Cat.4有哪些区别

    Cat 1的全称为LTE UE Category 1 xff0c 它是4G LTE网络的一个类 xff0c 也可以理解为低配的4G终端 xff0c 属于广域网 xff0c 蜂窝联网 xff0c 上行峰值为5Mbit s xff0c 下行峰值
  • RS485接口连接设备数量总共有多少?

    RS485总线可以连接256个设备 xff0c 但测试后发现这个数字有比较大的差异 有一种说法认为专门开发串行嵌入式的RS485总线只能连接32个节点 xff0c 这由自身的驱动能力决定的 有人说网上的各种485总线产品可以支持128个 x
  • 预防山体滑坡,泥石流监测智能预警系统

    一 行业背景 我国是一个山区面积较大的国家 xff0c 山地 丘陵约占国土总面积的2 3 xff0c 在众多的山区中 xff0c 都具备泥石流形成的基本条件 xff0c 这也让我国成为受泥石流灾害影响最大的国家 在我国境内 xff0c 泥石
  • 如何扩大无线网络信号强度?

    欢迎来到东用小知识课堂 xff0c 每天学习一分钟 xff0c 让你紧跟时代 xff0c 扩充自己 xff0c 成为大佬不是梦 xff01 无线网络通信设备存在一个问题 xff0c 那就是他的信号发射都是直线型 xff0c 因此一旦家中或者
  • OpenWrt 添加cpu温度显示监控

    opkg update opkg install lm sensors lm sensors detect 然后修改一下 usr lib lua luci view admin status index htm 增加一个温度的显示 lt C
  • RS485接线方式小科普

    欢迎来到东用知识小课堂 xff01 RS 485采用平衡发送和差分接收方式实现通信 xff1a 发送端将串行口的ttl电平信号转换成差分信号a xff0c b两路输出 xff0c 经过线缆传输之后在接收端将差分信号还原成ttl电平信号 RS
  • 传输数据稳如老狗,还支持多种接口,这款DTU让智能化更简单

    如果你的项目正在向着智慧化转变或发展 xff0c 那么你一定会深刻意识到数据传输的稳定性对于整个系统的稳定运行的重要性 毕竟 xff0c 项目的智能化发展需要时刻保持数据的可靠性和稳定传输 xff0c 如果一旦传输因设备或者网络等因素导致中
  • 什么是光耦隔离?光耦隔离的主要作用

    欢迎来到东用知识小课堂 xff01 光耦合器的结构相当于把发光二极管和光敏三极管封装在一起 光耦隔离电路使被隔离的两部分电路之间没有电的直接连接 xff0c 主要是防止因有电的连接而引起的干扰 xff0c 特别是低压的控制电路与外部高压电路
  • ORB305与CISCO路由器构建L2TP over IPSec VPN操作手册

    1 网络拓扑 在思科路由器与ORB305之间建立一个安全隧道 xff0c 对客户路由器端设备子网 xff0c 与思科路由器端服务器子网之间的数据流进行安全保护 xff0c 组网拓扑图如图所示 2 思科路由器端配置指导 此处以多数客户使用专线
  • linux下使用UDP发送接收数据

    接收 static int sock fd struct sockaddr in recv addr 读取参数 struct sockaddr in send addr 发送参数 sock fd 61 socket AF INET SOCK
  • 0长度数组的使用,重点掌握的知识

    0长度的数组在ISO C和C 43 43 的规格说明书中是不允许的 xff0c 但是GCC的C99支持的这种用法 GCC对0长度数组的文档参考 xff1a Arrays of Length Zero 如下代码片段 xff0c 哪个更简洁更灵
  • Freertos中检测内存的剩余函数

    static uint16 t prvTaskCheckFreeStackSpace const uint8 t pucStackByte
  • 重定位

    一 必须知道的几个概念 1 链接地址和运行地址 运行地址 xff0c 顾名思义就是程序运行的时候的地址 xff0c 也就是你用工具将代码下载到RAM的那个地址 xff0c 也叫加载地址 链接地址 xff0c 由链接脚本指定的地址 为什么需要
  • CC2541低功耗的实现方法

    转自 xff1a http blog csdn net mzy202 article details 42091537 CC2541 CC2540 实现超低功耗是非常重要的 xff1a 我们来总结一下实现方法 xff1a 1 xff0c 有
  • Macbook pro/air 2013 late -2014 使用转接卡更换NVME SSD休眠不醒问题的解决办法

    2021年1月更新 xff0c 发现升级 big sur 11 1之后 xff0c 固件版本变成了429 0 0 0 睡眠问题又回来了 xff0c 每次都睡死 xff0c 不醒 于是我按老办法 xff0c 把mbp114的nvme驱动刷到m