aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* mediatek: add initialization after resetSven Wegener2022-09-181-0/+14
| | | | | | | | | During GPIO initialization the pin state flips and triggers a reset of the ledbar MCU. It needs to be moved through an initialization sequence before working correctly. Signed-off-by: Sven Wegener <sven.wegener@stealer.net> (cherry picked from commit 013a956f086dc5d88f6e9cbd852ed4d900d436e0)
* mediatek: add support for reset gpioSven Wegener2022-09-181-0/+26
| | | | | | | | Some versions of the ledbar MCU have a reset pin. It needs to be correctly initialized or we might keep the MCU in reset state. Signed-off-by: Sven Wegener <sven.wegener@stealer.net> (cherry picked from commit 84e4bbf5f049cdb862eb25c446bd6973ed4238aa)
* mediatek: support reading more than one byte of responseSven Wegener2022-09-181-7/+8
| | | | | | | There are commands that return more than one byte of response. Signed-off-by: Sven Wegener <sven.wegener@stealer.net> (cherry picked from commit 7c852e7df50e370b26b060c96c3cc4491cee88eb)
* mediatek: cast literal value to charSven Wegener2022-09-181-1/+1
| | | | | | | | | | | Or the comparison against a signed char is always true, because the literal 0xaa is treated as an unsigned int, to which the signed char is casted during comparison. 0xaa is above the positive values of a signed char and negative signed char values result in values larger than 0xaa when casted to unsigned int. Signed-off-by: Sven Wegener <sven.wegener@stealer.net> (cherry picked from commit e9a22ce2535c4a0faf83d5595304fe0e2c7bd1b2)
* mediatek: correctly log i2c responseSven Wegener2022-09-181-2/+2
| | | | | | | | The read response is in the i2c_response variable. Also use %hhx format, because we're dealing with a single char. Signed-off-by: Sven Wegener <sven.wegener@stealer.net> (cherry picked from commit c4f9f9b44c82ffeacd9d3c00ba07171c35831337)
* mediatek: remove gpiod_direction_output()Sven Wegener2022-09-181-2/+0
| | | | | | | It's already set to output with GPIOD_OUT_LOW. Signed-off-by: Sven Wegener <sven.wegener@stealer.net> (cherry picked from commit a188356484f434c72ea536d91d7f93f59c562eb5)
* mediatek: do not use gpiod_set_raw_value()Sven Wegener2022-09-181-2/+2
| | | | | | | The polarity of the signal is set in the device dts. Signed-off-by: Sven Wegener <sven.wegener@stealer.net> (cherry picked from commit 56c2d15587dfe5285f1cf3bfb236c827bc446465)
* kernel: modules: package kmod-crypto-essivDaniel Golle2022-09-181-0/+12
| | | | | | | Package kernel module providing ESSIV support for block encryption. Signed-off-by: Daniel Golle <daniel@makrotopia.org> (cherry picked from commit 4133102898502c9bb453e8603b6c891aa103bce4)
* mediatek: fix typo in bpi-r64 image recipeDaniel Golle2022-09-181-1/+1
| | | | | | | | Janusz Dziedzic reported a typo introduced by a recent commit. Fix it. Fixes: 50c892d67b ("mediatek: bpi-r64: make initramfs/recovery optional") Signed-off-by: Daniel Golle <daniel@makrotopia.org> (cherry picked from commit 007c8809c1e888748af70c1b878f4d0105fe7531)
* mediatek: bpi-r64: make initramfs/recovery optionalDaniel Golle2022-09-181-2/+7
| | | | | | | | | | Only include recovery image in SD card image generated for the BananaPi BPi-R64 if building with CONFIG_TARGET_ROOTFS_INITRAMFS This allows to build images larger than 32 MB (the limit for initramfs/recovery image) by deselecting initramfs. Signed-off-by: Daniel Golle <daniel@makrotopia.org> (cherry picked from commit 50c892d67bb4af90861be9fbb6831c2eeb62de11)
* ramips: fix GB-PC1 and GB-PC2 LEDsArınç ÜNAL2022-09-183-17/+15
| | | | | | | | | | | | | | | | Add the missing LEDs for GB-PC2. Some of these LEDs don't exist on the device schematics. Tests on a GB-PC2 by me and Petr proved otherwise. Remove ethblack-green and ethblue-green LEDs for GB-PC1. They are not wired to GPIO 3 or 4 and the wiring is currently unknown. Set ethyellow-orange to display link state and activity of the ethyellow interface for GB-PC2. Link: https://github.com/ngiger/GnuBee_Docs/blob/master/GB-PCx/Documents/GB-PC2_V1.1_schematic.pdf Tested-by: Petr Louda <petr.louda@outlook.cz> Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com> (cherry picked from commit 2a6ef7f53d7b96e4ee0200196c28ed6b0a7c8465)
* wireless-regdb: update to 2022-08-12Nick Hainke2022-09-171-2/+2
| | | | | | | | | | Changes: 9dc9c89 wireless-regdb: update regulatory database based on preceding changes 442bc25 wireless-regdb: update 5 GHz rules for PK and add 60 GHz rule daee7f3 wireless-regdb: add 5 GHz rules for GY Signed-off-by: Nick Hainke <vincent@systemli.org> (cherry picked from commit 1d2d69c810261308652a577fc136e7327e0e1358)
* kernel: bump 5.10 to 5.10.143John Audia2022-09-177-15/+15
| | | | | | | All patches automatically rebased. Signed-off-by: John Audia <therealgraysky@proton.me> (cherry picked from commit b77217d916ba48accbdb46589e6e5e3a9972c44e)
* kernel: bump 5.10 to 5.10.142John Audia2022-09-1712-25/+25
| | | | | | | All patches automatically rebased. Signed-off-by: John Audia <therealgraysky@proton.me> (cherry picked from commit 837fd23c80b22c566b40181a28630ac29af8f96e)
* kernel: bump 5.10 to 5.10.141John Audia2022-09-1724-61/+61
| | | | | | | All patches automatically rebased. Signed-off-by: John Audia <therealgraysky@proton.me> (cherry picked from commit e8a62a1e6040de71bdcb1be1a1c30c064acbc059)
* kernel: bump 5.10 to 5.10.139John Audia2022-09-172-3/+3
| | | | | | | All patches automatically rebased. Signed-off-by: John Audia <therealgraysky@proton.me> (cherry picked from commit e0753c5d5cef5b03c60601364188afb262ccd02e)
* kernel: build crypto md5/sha1/sha256 modules for powerpcJosef Schlehofer2022-09-171-1/+19
| | | | | | | | | | | | | | | | | This builds and enables kernel optimized modules for mpc85xx target: - CONFIG_CRYPTO_MD5_PPC [1] - CONFIG_CRYPTO_SHA1_PPC_SPE [2] - CONFIG_CRYPTO_SHA256_PPC_SPE [3] Where it was possible, then use Signal Processing Engine, because CONFIG_SPE is already enabled in mpc85xx config. [1] https://cateee.net/lkddb/web-lkddb/CRYPTO_MD5_PPC.html [2] https://cateee.net/lkddb/web-lkddb/CRYPTO_SHA1_PPC.html [3] https://cateee.net/lkddb/web-lkddb/CRYPTO_SHA256_PPC_SPE.html Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com> (cherry picked from commit 3a702f8733ff371f30e9e3ba1e1aed5f4686b6b4)
* scripts/download.pl: fix downloads with wgetPetr Štetiar2022-09-161-2/+8
| | | | | | | | | | | | | | | | | | | | | Several users of wget for downloads (curl is not available in the system) have reported broken download functionality: wget --tries=5 --timeout=20 --output-document=- https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.142.tar.xz http://: Invalid host name. Thats all happening due to '' was passed as an argument, which got later expanded to http://. In the context of a list constructor '' is not nothing, it is an empty string element. So fix it by using () as it will yield "nothing" and thus not introduce an empty string element. Fixes: #10692 Fixes: 90c6e3aedf16 ("scripts: always check certificates") Signed-off-by: Jo-Philipp Wich <jo@mein.io> [shellwords() -> ()] Signed-off-by: Petr Štetiar <ynezz@true.cz> (cherry picked from commit 50a48faa1b8424e6b4b436b7118fffa2cba14b18)
* scripts/download.pl: silence can't exec curl warningPetr Štetiar2022-09-161-1/+1
| | | | | | | | | | | | When running build in verbose mode `make V=s` we can see a lot of following warnings when curl is not available in the system: Can't exec "curl": No such file or directory at scripts/download.pl line 77. So lets fix it by redirecting of the stderr to null hole. Signed-off-by: Petr Štetiar <ynezz@true.cz> (cherry picked from commit c836ca84e8f641e10a8349a8f9b7432b33d6cec1)
* scripts: always check certificatesJosh Roys2022-09-163-2/+11
| | | | | | | | | | | | | | | | Remove flags from wget and curl instructing them to ignore bad server certificates. Although other mechanisms can protect against malicious modifications of downloads, other vectors of attack may be available to an adversary. TLS certificate verification can be disabled by turning oof the "Enable TLS certificate verification during package download" option enabled by default in the "Global build settings" in "make menuconfig" Signed-off-by: Josh Roys <roysjosh@gmail.com> [ add additional info on how to disable this option ] Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> (cherry picked from commit 90c6e3aedf167b0ae1baf376e7800a631681e69a)
* tools: remove xxd packagePetr Štetiar2022-09-162-20/+1
| | | | | | | | | It shouldn't be needed anymore as we've now `scripts/xxdi.pl`, which should be self contained and fully compatible `xxd -i` replacement. Fixes: #10555 Signed-off-by: Petr Štetiar <ynezz@true.cz> (cherry picked from commit 88c9056a70901577489ecdc7a25207a9b7576d6e)
* build: provide xxd -i with scripts/xxdi.plPetr Štetiar2022-09-161-1/+4
| | | | | | | | | | | | | | | Dependency on xxd was added in commit c4dd2441e787 ("tools: add xxd (from vim)") as U-Boot requires xxd to create the default environment from an external file. Later in commit 2b94aac7a128 ("tools: xxd: use more convenient source tarball"), xxd from another source was used instead, but that source is currently unavailable, so let's fix it by using simple xxdi.pl Perl script instead. Fixes: #10555 Signed-off-by: Petr Štetiar <ynezz@true.cz> (cherry picked from commit eae2fb8027cb892e42181e471ba344aa5d26bf7e)
* scripts: xxdi.pl: add xxd -i compat modePetr Štetiar2022-09-161-18/+19
| | | | | | | | | | | | So it can serve as a standalone drop in replacement for xxd utility used currently mostly in U-Boot packages with `xxd -i` mode which outputs C include file style, with aim for byte to byte identical output, so the eventual difference in the generated output is easily spottable. Fixes: #10555 Signed-off-by: Petr Štetiar <ynezz@true.cz> Signed-off-by: Jo-Philipp Wich <jo@mein.io> [perl-fu] (cherry picked from commit 06e01e817ec6643a35beb9e6946689e9cc7d020a)
* scripts: xxdi.pl: remove File::Slurp dependencyJo-Philipp Wich2022-09-161-2/+17
| | | | | | | | In order to make it more portable. Signed-off-by: Jo-Philipp Wich <jo@mein.io> Signed-off-by: Petr Štetiar <ynezz@true.cz> (cherry picked from commit 8b278a76d90e3724815a5fde32be59f7796be1d8)
* scripts: add xxdi.plPetr Štetiar2022-09-161-0/+50
| | | | | | | | | | xxdi.pl is a Perl script that implements vim's 'xxd -i' mode so that packages do not have to use all of vim just to get this functionality. References: #10555 Source: https://github.com/gregkh/xxdi/blob/97a6bd5cee05d1b15851981ec38ef5a460ddfcb1/xxdi.pl Signed-off-by: Petr Štetiar <ynezz@true.cz> (cherry picked from commit 2117d04a3aaad3394c0afec799d9c43f8a09c2cf)
* mac80211: backport tx queueing bugfixes add a bug fix for a rare crashFelix Fietkau2022-09-154-0/+171
| | | | | | | | | | Re-introduce the queue wake fix that was reverted due to a regression, but this time with the follow-up fixes that take care of the regression. Signed-off-by: Felix Fietkau <nbd@nbd.name> (cherry picked from commit 9a93b62f315ad4c9f021c414ed80ba337ab4a01e) (cherry-picked from commit 8b804cae5e039142bc63896a75f15146eca3bebc) (cherry-picked from commit 8b06e06832ebe757246582b65306ad2a2537741f)
* bcm53xx: update NVMEM driver for NVRAMRafał Miłecki2022-09-144-5/+230
| | | | | | | Include support for NVMEM cells. Signed-off-by: Rafał Miłecki <rafal@milecki.pl> (cherry picked from commit 2f50c53f1772f24e4687e960e21c5b392fb522f0)
* kernel: backport mtd dynamic partition patchChristian Marangi2022-09-137-6/+112
| | | | | | | | | | | | Backport upstream solution that permits to declare nvmem cells with dynamic partition defined by special parser. This provide an OF node for NVMEM and connect it to the defined dynamic partition. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> Signed-off-by: Rafał Miłecki <rafal@milecki.pl> (cherry picked from commit 1a9ee367343edce263f82cc91a49d796c9d45ea3)
* ipq40xx: add GL-AP1300 label-mac-deviceDavid Bauer2022-09-111-0/+1
| | | | | Signed-off-by: David Bauer <mail@david-bauer.net> (cherry picked from commit 470ca65bda154fb5a601c6bbe20e20646535563f)
* ipq40xx: add WAN LED mapping for GL-AP1300David Bauer2022-09-111-0/+3
| | | | | Signed-off-by: David Bauer <mail@david-bauer.net> (cherry picked from commit 4d014a7bd6d8fbfe7dc4cebd6c55d85601231fa4)
* rockchip: add system-LED aliases specific to OpenWrtDavid Bauer2022-09-101-0/+16
| | | | | | | | Add the aliases sections required to detect LEDs specific to OpenWrt boot / update indication for the NanoPi R4S. Signed-off-by: David Bauer <mail@david-bauer.net> (cherry picked from commit 1588069612f5db0720cbb942a6f8787878c223c3)
* rockchip: ensure NanoPi R4S has unique MAC addressDavid Bauer2022-09-101-5/+28
| | | | | | | | | | | | | | | | | | Ensure the MAC address for all NanoPi R4S boards is assigned unique for each board. FriendlyElec ship two versions of the R4S: The standard as well as the enterprise edition with only the enterprise edition including the EEPROM chip that stores the unique MAC address. In order to assign both board types unique MAC addresses, fall back on the same method used for the NanoPi R2S in case the EEPROM chip is not present by generating the board MAC from the SD card CID. [0] https://wiki.friendlyelec.com/wiki/index.php/NanoPi_R4S#Differences_Between_R4S_Standard_Version_.26_R4S_Enterprise_Version Signed-off-by: David Bauer <mail@david-bauer.net> (cherry picked from commit b5675f500daff3ef3f904e53a5566aa7dc09b786)
* realtek: fix RTL839x receive tag decodingBjørn Mork2022-09-091-2/+2
| | | | | | | | | | The previous fixup was incomplete, and the offsets for the queue and crc_error cpu_tag bitfields were still wrong on RTL839x. Fixes: 545c6113c93b ("realtek: fix RTL838x receive tag decoding") Suggested-by: Jan Hoffmann <jan@3e8.eu> Signed-off-by: Bjørn Mork <bjorn@mork.no>
* ipq40xx: add LTE packages for GL-AP1300David Bauer2022-09-091-1/+1
| | | | | | | | Add LTE packages required for operating the LTE modem optionally shipped with the GL-AP1300. Signed-off-by: David Bauer <mail@david-bauer.net> (cherry picked from commit c7c350922668e262068c9301b75434d7bb4b8d10)
* ath79: add support for ZTE MF281David Bauer2022-09-083-4/+296
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add support for the ZTE MF281 battery-powered WiFi router. Hardware -------- SoC: Qualcomm Atheros QCA9563 RAM: 128M DDR2 FLASH: 2M SPI-NOR (GigaDevice GD25Q16) 128M SPI-NAND (GigaDevice) WLAN: QCA9563 2T2R 802.11 abgn QCA9886 2T2R 802.11 nac WWAN: ASRMicro ASR1826 ETH: Qualcomm Atheros QCA8337 UART: 115200 8n1 Unpopulated connector next to SIM slot (SIM) GND - RX - TX - 3V3 Don't connect 3V3 BUTTON: Reset - WPS LED: 1x debug-LED (internal) LEDs on front of the device are controlled using the modem CPU and can not be controlled by OpenWrt Installation ------------ 1. Connect to the serial console. Power up the device and interrupt autoboot when prompted 2. Connect a TFTP server reachable at 192.168.1.66 to the ethernet port. Serve the OpenWrt initramfs image as "speedbox-2.bin" 3. Boot the initramfs image using U-Boot $ setenv serverip 192.168.1.66 $ setenv ipaddr 192.168.1.154 $ tftpboot 0x84000000 speedbox-2.bin $ bootm 4. Copy the OpenWrt factory image to the device using scp and write to the NAND flash $ mtd write /path/to/openwrt/factory.bin firmware WWAN ---- The WWAN card can be used with OpenWrt. Example configuration for connection with a unauthenticated dual-stack APN: network.lte=interface network.lte.proto='ncm' network.lte.device='/dev/ttyACM0' network.lte.pdptype='IPV4V6' network.lte.apn='internet.telekom' network.lte.ipv6='auto' network.lte.delay='10' The WWAN card is running a modified version of OpenWrt and handles power-management as well as the LED controller (AW9523). A root shell can be acquired by installing adb using opkg and executing "adb shell". Signed-off-by: David Bauer <mail@david-bauer.net> (cherry picked from commit 1e1695f959e678868bb7911d059b847f38fc9cf4)
* realtek: fix RTL838x receive tag decodingBjørn Mork2022-09-081-3/+6
| | | | | | | | | | | | | | | | | | | | Commit dc9cc0d3e2a1 ("realtek: add QoS and rate control") replaced a 16 bit reserved field in the RTL83xx packet header with the initial cpu_tag word, shifting the real cpu_tag fields by one. Adjusting for this new shift was partially forgotten in the new RX tag decoders. This caused the switch to block IGMP, effectively blocking IPv4 multicast. The bug was partially fixed by commit 9d847244d9fd ("realtek: fix RTL839X receive tag decoding") Fix on RTL838x too, including correct NIC_RX_REASON_SPECIAL_TRAP value. Suggested-by: Jan Hoffmann <jan@3e8.eu> Fixes: dc9cc0d3e2a1 ("realtek: add QoS and rate control") Signed-off-by: Bjørn Mork <bjorn@mork.no> (cherry picked from commit 545c6113c93bbf7de1b0e515141a4565f7e6cece)
* mt76: update to the latest versionFelix Fietkau2022-09-061-3/+3
| | | | | | | d70546462b7b mt76: fix 5 GHz connection regression on mt76x0/mt76x2 Signed-off-by: Felix Fietkau <nbd@nbd.name> (cherry-picked from commit 33c11442b2fc60313a2d3196c9b01cf9b0931305)
* hostapd: rename hostapd multicast_to_unicast option to multicast_to_unicast_allFelix Fietkau2022-09-061-5/+5
| | | | | | | | | | | | | | | | | | | | | There are two feature currently altered by the multicast_to_unicast option. 1. bridge level multicast_to_unicast via IGMP snooping 2. hostapd/mac80211 config multicast_to_unicast setting The hostapd/mac80211 setting has the side effect of converting *all* multicast or broadcast traffic into per-station duplicated unicast traffic, which can in some cases break expectations of various protocols. It also has been observed to cause ARP lookup failure between stations connected to the same interface. The bridge level feature is much more useful, since it only covers actual multicast traffic managed by IGMP, and it implicitly defaults to 1 already. Renaming the hostapd/mac80211 option to multicast_to_unicast_all should avoid unintentionally enabling this feature Signed-off-by: Felix Fietkau <nbd@nbd.name> (cherry-picked from commit 09ea1db93b53d2c1e4a081f20fbbddd4bffd451d)
* bcm27xx: make NVMEM driver patch apply againRafał Miłecki2022-09-041-6/+7
| | | | | Fixes: 4efa0b70d54f1 ("kernel: backport U-Boot environment data NVMEM driver") Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* bcm4908: enable NVMEM U-Boot env data driverRafał Miłecki2022-09-031-0/+3
| | | | | | | It's needed for devices with U-Boot bootloader. Signed-off-by: Rafał Miłecki <rafal@milecki.pl> (cherry picked from commit fb47b9fa1aa760de58f1b43d9f3e654acf1f1671)
* kernel: backport U-Boot environment data NVMEM driverRafał Miłecki2022-09-036-10/+361
| | | | | | | It parses U-Boot env data into NVMEM cells. Signed-off-by: Rafał Miłecki <rafal@milecki.pl> (cherry picked from commit 34cf31043504473df3174a22d163b71b75e46542)
* kernel: backport mtd patch adding of_platform_populate() callsRafał Miłecki2022-09-033-8/+81
| | | | | | | This is required for non-parser drivers handling MTD devices. Signed-off-by: Rafał Miłecki <rafal@milecki.pl> (cherry picked from commit 41e1e838fbbb0308ad7353a3714e04b8c4585e7e)
* OpenWrt v22.03.0: revert to branch defaultsHauke Mehrtens2022-09-035-11/+9
| | | | Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* OpenWrt v22.03.0: adjust config defaultsv22.03.0Hauke Mehrtens2022-09-035-9/+11
| | | | Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* uboot-mediatek: mt7622: suppress unwanted pinctrl warningDaniel Golle2022-09-033-6/+47
| | | | | | | Import patch which removes the default pinctrl of uart0 to suppress the unwanted warning. Apply also to downstream boards. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* mediatek: mt7622: fix DTS compatible of UniFi 6 LR variantsDaniel Golle2022-09-033-3/+3
| | | | | | | | Make sure the compatible string in DTS matches the now v1/v2 differentiated board name in target/linux/mediatek/image/mt7622.mk. Signed-off-by: Daniel Golle <daniel@makrotopia.org> (cherry picked from commit be555b9dd8618b8da68c42ae8dda493337519838)
* uboot-mediatek: backport fix for unstable UART on MT7622Daniel Golle2022-09-031-0/+26
| | | | | | | | | | | | | Import pending patch "arm: dts: mt7622: force high-speed mode for uart" from Weijie Gao <weijie.gao@mediatek.com> fixing the UART problems on MT7622 which made it hard to use the U-Boot menu on devices with this SoC. This patch is also contained in commit c09eb08dad ("uboot-mediatek: add support for MT798x platforms") in the development branch. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uboot-mediatek: no compression means IH_COMP_NONEDaniel Golle2022-09-034-4/+121
| | | | | | | | | | | Treat missing compression node in FIT image as IH_COMP_NONE. This is implicentely already happening in most places, but for now was still triggering an annoying warning about initramfs compression being obsolete despite compression note being absent. Fix this. Signed-off-by: Daniel Golle <daniel@makrotopia.org> (cherry picked from commit 0a18456ffc25d6a26911fca6f9079090243c2284)
* uboot-mediatek: fix factory reset on UBIDaniel Golle2022-09-032-2/+2
| | | | | | | | Truncating a UBI volume using `ubi write 0x0 volname 0x0` results in segfault on newer U-Boot. Write 1MB of 0s instead. Signed-off-by: Daniel Golle <daniel@makrotopia.org> (cherry picked from commit d118cbdfece181994a96d1bcb1868bd807d481bf)
* uboot-envtools: mt7622: use 4k sectors for UniFi 6 LR (ubootmod)Daniel Golle2022-09-031-1/+1
| | | | | | | | | Use 4k sectors when accessing the U-Boot environment on the 64MiB SPI-NOR flash chip found in the UniFi 6 LR. The speeds up environment write access as only 4kB instead of 64kB have to be written. Signed-off-by: Daniel Golle <daniel@makrotopia.org> (cherry picked from commit f0adf253fdcf78ce005dad9652b405a4ad2726e6)