请选择 进入手机版 | 继续访问电脑版

『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 251|回复: 6

[经验分享] github被墙,烧写失败?ESP32模块ESPHome首次烧写终极大法

[复制链接]

38

主题

757

帖子

3359

积分

超级版主

Rank: 8Rank: 8

积分
3359
金钱
2552
HASS币
290

教程狂人突出贡献

发表于 5 天前 | 显示全部楼层 |阅读模式
本帖最后由 XCray 于 2021-5-2 15:39 编辑

这两天想折腾一下ble,拿出一个esp32模块,按照以往的经验编译好固件后使用esphome-flasher工具烧写,不料失败了!

失败的原因挺恶心的,是因为github被墙,而烧写过程中需要从github下载几个很小的文件。

虽然我对gc党很尊敬,但这种连github都要墙的做法实在让人恼火!

为了这点事搬梯子有点不值当的,只好翻了一下ESPHome-Flasher的源码,终于找到了解决方案。

很显然,我们可以利用ESPressif官方的烧写工具完成烧写,只需要知道ESPHome-Flasher从github上下载了哪几个文件、各自对应的烧写地址就可以了。

答案:
1、在文件esphomeflasher/common.py里:
        addr_filename.append((0x1000, bootloader))
        addr_filename.append((0x8000, partitions))
        addr_filename.append((0xE000, otadata))
        addr_filename.append((0x10000, firmware))
2、在文件esphomeflasher/const.py里:
ESP32_DEFAULT_OTA_DATA = 'https://raw.githubusercontent.com/espressif/arduino-esp32/1.0.0/tools/partitions/boot_app0.bin'
ESP32_DEFAULT_BOOTLOADER_FORMAT = 'https://raw.githubusercontent.com/espressif/arduino-esp32/' \
                                  '1.0.4/tools/sdk/bin/bootloader_$FLASH_MODE$_$FLASH_FREQ$.bin'
ESP32_DEFAULT_PARTITIONS = 'https://raw.githubusercontent.com/esphome/esphomeflasher/master/partitions.bin'
3、好了,固件是自己编译的,其他三个文件的链接和烧写地址都有了,借助github下载加速器就可以下载,然后用espressif官方的烧写工具烧写即可,以后就可以ota了
esp.png

4、三个bin文件附在这儿,需要的自取
bins.rar (10.28 KB, 下载次数: 0)
建议阅读我发的所有帖子,在不同版块。不敢吹嘘,大部分还都算得上是干货。
任意米家蓝牙设备(最重要的:各款智能锁)接入HA的终极方案:https://bbs.hassbian.com/thread-10434-1-1.html
回复

使用道具 举报

7

主题

314

帖子

1108

积分

金牌会员

Rank: 6Rank: 6

积分
1108
金钱
794
HASS币
0
发表于 5 天前 | 显示全部楼层
编译esphome固件,也得扶梯子啊,怎么都跑不了的。
我要么就是直接esphome dashboard,编译完固件接着就连线刷了。
要么直接用esphomeflasher,就刷一个固件文件就好了(这个好像刷的过程不需要下载文件)。
回复

使用道具 举报

38

主题

757

帖子

3359

积分

超级版主

Rank: 8Rank: 8

积分
3359
金钱
2552
HASS币
290

教程狂人突出贡献

 楼主| 发表于 4 天前 | 显示全部楼层
telanx 发表于 2021-5-2 22:43
编译esphome固件,也得扶梯子啊,怎么都跑不了的。
我要么就是直接esphome dashboard,编译完固件接着就连 ...

奇怪!

我从来没碰到过编译时需要梯子的情况。

恰恰是用esphome flasher刷写的时候,需要下载3个bin文件。

正好和你说的相反。
建议阅读我发的所有帖子,在不同版块。不敢吹嘘,大部分还都算得上是干货。
任意米家蓝牙设备(最重要的:各款智能锁)接入HA的终极方案:https://bbs.hassbian.com/thread-10434-1-1.html
回复

使用道具 举报

4

主题

286

帖子

1033

积分

金牌会员

Rank: 6Rank: 6

积分
1033
金钱
747
HASS币
0
发表于 4 天前 | 显示全部楼层
XCray 发表于 2021-5-3 06:37
奇怪!

我从来没碰到过编译时需要梯子的情况。

用的docker版esphome,新编或升级重编才需要,刷机时不需要吧!
回复

使用道具 举报

4

主题

227

帖子

1185

积分

金牌会员

Rank: 6Rank: 6

积分
1185
金钱
958
HASS币
0
发表于 4 天前 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

9

主题

187

帖子

1396

积分

论坛技术达人

积分
1396
金钱
1179
HASS币
120
发表于 昨天 21:38 | 显示全部楼层
XCray 发表于 2021-5-3 06:37
奇怪!

我从来没碰到过编译时需要梯子的情况。

在配置了一些新的功能之后,esphome编译器确实需要拉取一些库文件。可能根据地区的不同,CDN节点随缘可连接,就可以无墙访问成功,可以clean一下编译试试,可能就失败报错了
回复

使用道具 举报

38

主题

757

帖子

3359

积分

超级版主

Rank: 8Rank: 8

积分
3359
金钱
2552
HASS币
290

教程狂人突出贡献

 楼主| 发表于 12 小时前 | 显示全部楼层
TwoOne 发表于 2021-5-6 21:38
在配置了一些新的功能之后,esphome编译器确实需要拉取一些库文件。可能根据地区的不同,CDN节点随缘可连 ...

我知道你们几位说的esphome编译时也会失败的原因了。

先说一下我的环境和状态:群晖docker,esphome编译时从来没碰到过因为github访问受阻造成的失败,从来没有,包括前段时间把esphome从hassio迁移到单独的容器后从0开始配置esp32模块(之前只用8266)。

编译时确实会需要临时拉取一些库文件,使用esphome flasher工具烧写时需要拉取3个bin文件。库文件vs编译好的bin文件,这是最大的区别!
前者都是从github.com的域名下拉取,而后者是raw.githubusercontent.com。

现在大国域网内访问github相关资源受阻的问题也不是单纯的一个。
github.com域名主要是dns污染,解决这个问题的一个行之有效而又不需要梯子的简单方案就是修改hosts文件。我自从发现访问github.com不爽之后就在路由器上修改了hosts文件,每次发现又不爽了就更新一下,迄今为止都很好用,感谢这篇文章:
2021年 github被墙最新hosts-每日更新
而raw.githubusercontent.com就不同了,这个域名基本上就是真的被墙了,hosts解决不了,如果直接访问这个域名只能搬梯子。虽然借助下载加速器可以解决手动下载的问题,但esphome flasher工具做不到这一点(除非修改它的源码自己编译)。
建议阅读我发的所有帖子,在不同版块。不敢吹嘘,大部分还都算得上是干货。
任意米家蓝牙设备(最重要的:各款智能锁)接入HA的终极方案:https://bbs.hassbian.com/thread-10434-1-1.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2021-5-7 18:35 , Processed in 0.097878 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表