aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ar71xx/base-files
Commit message (Collapse)AuthorAgeFilesLines
* ar71xx: add support for YunCore SR3200 and XD3200Piotr Dymacz2016-12-126-4/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | YunCore SR3200 is a dual-band AC1200 router, based on Qualcomm/Atheros QCA9563+QCA9882+QCA8337N. YunCore XD3200 (FCC ID: 2ADUG-XD3200) is a dual-band AC1200 ceiling mount AP with PoE support, based on Qualcomm/Atheros QCA9563+QCA9882+QCA8334. Common specification: - 775/650/258 MHz (CPU/DDR/AHB) - 128 MB or RAM (DDR2) - 16 MB of FLASH (SPI NOR) - 2T2R 2.4 GHz, with ext. PA (SKY65174-21), up to 30 dBm - 2T2R 5 GHz, with ext. PA (SKY85405-11) and LNA (SKY85601-11), up to 30 dBm SR3200 specification: - 5x 10/100/1000 Mbps Ethernet - 6x ext. RP-SMA antennas (actually, only 4 are connected with radio chips) - 3x LED (+ 5x LED in RJ45 sockets), 1x button - UART header on PCB XD3200 specification: - 2x 10/100/1000 Mbps Ethernet, with 802.3at PoE support (WAN port) - 4x internal antennas - 3 sets of LEDs on external PCB (+ 2x LED near RJ45 sockets), 1x button - UART and JTAG (custom 6-pin, 2 mm pitch) headers on PCB LED for 5 GHz WLAN is currently not supported on both devices as it is connected directly to the QCA9882 radio chip. Flash instruction under vendor firmware, using telnet/SSH: 1. If your firmware does not have root password, go to point 5 2. Connect PC with 192.168.1.x address to LAN or WAN port 3. Power up device, enter failsafe mode with button (no LED indicator!) 4. Change root password and reboot (mount_root, passwd ..., reboot -f) 5. Upload lede-ar71xx-...-sysupgrade.bin to /tmp using SCP 6. Connect PC with 192.168.188.x address to LAN port, SSH to 192.168.188.253 7. Invoke: - cd /tmp - fw_setenv bootcmd "bootm 0x9fe80000 || bootm 0x9f050000" - mtd -e firmware -r write lede-ar71xx-...-sysupgrade.bin firmware Flash instruction under U-Boot, using UART: 1. tftp 0x80060000 lede-ar71xx-...-sysupgrade.bin 2. erase 0x9f050000 +$filesize 3. cp.b $fileaddr 0x9f050000 $filesize 4. setenv bootcmd "bootm 0x9fe80000 || bootm 0x9f050000" 5. saveenv && reset Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* ar71xx: fix LEDs and sysupgrade support for TL-WA801ND v3Matthias Schiffer2016-12-063-0/+6
| | | | Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
* ar71xx: fix syntax error in /lib/ar71xx.shMatthias Schiffer2016-11-291-4/+4
| | | | | | | | Remove all comments in ubnt_xm_board_detect(), as it's not possible to add comments to specific lines of the case construct anyways. Fixes: 9a5801e7 "ar71xx: add model detection for UBNT Rocket Ti" Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
* ar71xx: add model detection for UBNT Rocket TiMatthias Schiffer2016-11-291-1/+2
| | | | | Based-on-patch-by: Neal Oakey <neal.oakey@bingo-ev.de> Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
* ar71xx: Fix switch config on Mikrotik RB450/GJoão Chaínho2016-11-211-2/+6
| | | | | | | This patch fixes the ethernet switch initial config for Mikrotik RB450 and RB450G. The previous version wrongly changed the RouterStation Pro config. This one creates a specific config for the RB450G and leaves the RouterStation Pro unchanged. Signed-off-by: João Chaínho <joaochainho@gmail.com>
* ar71xx: add support for YunCore CPE830Piotr Dymacz2016-11-214-0/+7
| | | | | | | | | CPE830 is a clone of AP90Q, with different type of antenna (panel) and additional 4 LEDs for WiFi signal level indication. Use the same flash approach as for YunCore AP90Q. Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* ar71xx: add support for YunCore CPE870Piotr Dymacz2016-11-214-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | YunCore CPE870 is an outdoor CPE/AP based on Atheros AR9341. Short specification: - 535/400/200 MHz (CPU/DDR/AHB) - 2x 10/100 Mbps Ethernet, passive PoE support - 64/128 MB of RAM (DDR2) - 8 MB of FLASH - 2T2R 2.4 GHz with external PA (SKY65174-21), up to 30 dBm - internal 14 dBi panel antenna - 8x LED, 1x button - UART (JP1) header on PCB Flash instruction (do it under U-Boot, using UART): 1. tftp 0x80060000 lede-ar71xx-generic-cpe870-squashfs-sysupgrade.bin 2. erase 0x9f020000 +$filesize 3. cp.b $fileaddr 0x9f020000 $filesize 4. setenv bootcmd "bootm 0x9f020000" 5. saveenv && reset Vendor firmware access (login/password): Admin/5up Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* ar71xx: add support for YunCore AP90QPiotr Dymacz2016-11-214-7/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | YunCore AP90Q is an outdoor CPE/AP based on Qualcomm/Atheros QCA9531 v2. Short specification: - 650/600/216 MHz (CPU/DDR/AHB) - 2x 10/100 Mbps Ethernet, passive PoE support - 64/128 MB of RAM (DDR2) - 16 MB of FLASH - 2T2R 2.4 GHz with external PA, up to 29 dBm - 2x internal 5 dBi omni antennas - 4x LED, 1x button - UART (JP1) header on PCB Flash instruction under U-Boot, using UART: 1. tftp 0x80060000 lede-ar71xx-generic-ap90q-squashfs-sysupgrade 2. erase 0x9f050000 +$filesize 3. cp.b $fileaddr 0x9f050000 $filesize 4. setenv bootcmd "bootm 0x9f050000" 5. saveenv && reset Flash instruction under vendor fimrware, using telnet/SSH: 1. Connect PC with 192.168.1.x address to WAN port 2. Power up device, enter failsafe mode with button (no LED indicator!) 3. Change root password and reboot (mount_root, passwd ..., reboot -f) 4. Upload lede-ar71xx-generic-ap90q-squashfs-sysupgrade.bin to /tmp using SCP 5. Connect PC with 192.168.188.x address to LAN port, SSH to 192.168.188.253 6. Invoke: - cd /tmp - fw_setenv bootcmd "bootm 0x9f050000" - mtd erase firmware - mtd -r write lede-ar71xx-generic-ap90q-squashfs-sysupgrade.bin firmware Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* ar71xx: add support for COMFAST CF-E380AC v1 and v2Piotr Dymacz2016-11-216-3/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | COMFAST CF-E380AC v1/v2 is a ceiling mount AP with PoE support, based on Qualcomm/Atheros QCA9558+QCA9880+AR8035. There are two versions of this model, with different RAM and U-Boot mtd partition sizes: - v1: 128 MB of RAM, 128 KB U-Boot image size - v2: 256 MB of RAM, 256 KB U-Boot image size Version number is available only inside vendor GUI, hardware and markings are the same. Short specification: - 720/600/200 MHz (CPU/DDR/AHB) - 1x 10/100/1000 Mbps Ethernet, with PoE support - 128 or 256 MB of RAM (DDR2) - 16 MB of FLASH - 3T3R 2.4 GHz, with external PA (SE2576L), up to 28 dBm - 3T3R 5 GHz, with external PA (SE5003L1), up to 30 dBm - 6x internal antennas - 1x RGB LED, 1x button - UART (T11), LEDs/GPIO (J7) and USB (T12) headers on PCB - external watchdog (Pericon Technology PT7A7514) Flash instruction: Original firmware is based on OpenWrt. Use sysupgrade image directly in vendor GUI. Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* ar71xx: add support for COMFAST CF-E320N v2 and CF-E520N/CF-E530NPiotr Dymacz2016-11-214-2/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As we already have support for CF-E316N v2 and many devices from this vendor look similar, the support was included in existing mach-*.c file, with few cleanups and fixes. All 3 devices are based on Qualcomm/Atheros QCA9531 v2. COMFAST CF-E320N v2 is a ceiling mount AP with PoE support. Short specification: - 650/393/216 MHz (CPU/DDR/AHB) - 2x 10/100 Mbps Ethernet, both with PoE support - 64 MB of RAM (DDR2) - 16 MB of FLASH - 2T2R 2.4 GHz, up to 22 dBm - 2x internal antennas - 1x RGB LED, 1x button - UART (J1), GPIO (J9) and USB (J2) headers on PCB - external watchdog (Pericon Technology PT7A7514) COMFAST CF-E520N/CF-E530N are in-wall APs with USB and PoE support. They seem to have different only the front panel. Short specification: - 650/393/216 MHz (CPU/DDR/AHB) - 2x 10/100 Mbps Ethernet, WAN with PoE support - 1x USB 2.0 (in CF-E520N covered by panel, available on PCB) - 32 MB of RAM (DDR2) - 8 MB of FLASH - 2T2R 2.4 GHz, up to 22 dBm - 2x internal antennas - 1x LED, 1x button - UART (J1) headers on PCB Flash instruction: Original firmware is based on OpenWrt. Use sysupgrade image directly in vendor GUI. Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* ar71xx: tl-wpa8630: Use dynamic parsing of the firmware partitionHenryk Heisig2016-11-161-1/+1
| | | | Signed-off-by: Henryk Heisig <hyniu@o2.pl>
* ar71xx: Add usable, inactive LEDs on OpenMesh devicesJaylin Yu2016-11-161-0/+27
| | | | | | | | | | | OpenMesh devices have often LEDs which are not yet used by OpenWrt. These should still be available as disabled LEDs in the system configuration for easier modification. Signed-off-by: Jaylin Yu <jaylin.yu@open-mesh.com> [sven.eckelmann@open-mesh.com: Remove LEDs already specified via diag.sh, add wifi/status LEDs] Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
* ar71xx: add support for Buffalo BHR-4GRV2FUKAUMI Naoki2016-11-166-4/+15
| | | | Signed-off-by: FUKAUMI Naoki <naobsd@gmail.com>
* ar71xx, ramips: reduce CPU load and flickering on devices using rssliedsMartin Weinelt2016-11-161-7/+7
| | | | | | | | | Polling every 40ms causes more than 10% CPU load on weak devices. An interval of 200ms is much more reasonable. Signed-off-by: Martin Weinelt <martin@darmstadt.freifunk.net> [Matthias Schiffer: adapt OpenWrt patch; add ramips; extend commit message] Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
* ar71xx: wpa8630: change board name to tl-wpa8630Henryk Heisig2016-11-086-19/+19
| | | | Signed-off-by: Henryk Heisig <hyniu@o2.pl>
* ar71xx: Add support to Powerline ac TP-Link WPA8630Henryk Heisig2016-10-316-2/+20
| | | | Signed-off-by: Henryk Heisig <hyniu@o2.pl>
* ar71xx: Add net config for MR12 & MR16Chris Blake2016-10-311-0/+2
| | | | | | | | | Both the MR12 and MR16 are single gigabit ethernet devices, similar to the MR18. This change gives them the correct network config on a fresh install. Signed-off-by: Chris Blake <chrisrblake93@gmail.com> [Jo-Philipp Wich: adjust for alphabetical ordering, line wrap commit msg] Signed-off-by: Jo-Philipp Wich <jo@mein.io>
* ar71xx: add support for D-Link DAP-2695 rev. A1Stijn Tintel2016-10-276-0/+37
| | | | | Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be> Acked-by: John Crispin <john@phrozen.org>
* ar71xx/base-files: rename 09_fix-trx-header 09_fix-checksumStijn Tintel2016-10-271-0/+0
| | | | | Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be> Acked-by: John Crispin <john@phrozen.org>
* ar71xx: add support for TP-Link WR802N v1Julius Schulz-Zander2016-10-265-0/+12
| | | | | | | This patch adds support solely for version 1 of the TP-Link WR802N. It is based on Rick Pannen's patch posted on the OpenWrt devel list. Signed-off-by: Julius Schulz-Zander <julius@inet.tu-berlin.de>
* ar71xx: Remove switch config for the MR12/MR16Chris Blake2016-10-261-2/+0
| | | | | | | These boards do not have a switch, so they should have never been added to this file in the first place. Signed-off-by: Chris Blake <chrisrblake93@gmail.com>
* ar71xx: Add support to DomyWifi DW33DJing Lin2016-10-256-0/+18
| | | | Signed-off-by: Jing Lin <mumuqz@163.com>
* ar71xx: Add support to TP-Link EAP120Henryk Heisig2016-10-184-1/+13
| | | | Signed-off-by: Henryk Heisig <hyniu@o2.pl>
* ar71xx: add support for the Airtight C-60Christian Lamparter2016-10-157-14/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds support for the Airtight C-60. SOC: Atheros AR9344 rev 2 (CPU:560.000MHz) RAM: 128 MiB NOR: MX25L3205D 4MiB NAND: ST Micro NAND 32MiB 3,3V 8-bit SW-NET: AR8327N (2 Ports) WLAN1: Dual-Band AR9340 Rev:2 (built-in SoC) WLAN2: Dual-Band AR9300 Rev:4 PCIe Chip The switch is setup for an accesspoint: LAN1: (gigabit) is the wan-port. LAN2: (fast ethernet) is bridged with the br-lan. Flashing Guide (via initramfs): 1. Connect a PC to the serial port of the C-60. power up the C-60. Enter u-boot command prompt: #> nand erase #> setenv bootcmd "bootm 0x9f060000" #> saveenv #> setenv ipaddr 192.168.1.1 #> setenv netmask 255.255.255.0 #> setenv serverip 192.168.1.100 #> setenv bootfile lede-ar71xx-nand-c-60-initramfs-kernel.bin #> tftpboot #> bootm 2. Wait for the C-60 to boot LEDE. On the root prompt. Enter: # ubiformat /dev/mtd4 # ubiattach -p /dev/mtd4 3. After that copy the sysupgrade.tar onto the router and run: # sysupgrade sysupgrade.tar to flash the image. Special thanks to Chris Blake <chrisrblake93@gmail.com>. He provided a C-60 unit and he helped with debugging the switch, LEDs and platfrom support. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* ar71xx: add userspace support for D-Link DIR-869 A1, generate imagesFlorian Beier2016-10-115-0/+10
| | | | | | Signed-off-by: Florian Beier <beier.florian@gmail.com> [Matthias Schiffer: fix factory image, improve commit message] Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
* ar71xx: add back SEAMA header checksum fix (as used on ramips)Matthias Schiffer2016-10-111-0/+17
| | | | | | | | The D-Link DIR-869 A1 doesn't accept images with the jffs2 marker added after the checksummed range, so we need to include it in the checksum and fix it on first boot. Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
* ar71xx: base-files: fix boards order in lib/upgrade/platform.shPiotr Dymacz2016-10-041-134/+134
| | | | | | Keep also case sections in alphabetical order. Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* ar71xx: base-files: cleanups in lib/upgrade/platform.shPiotr Dymacz2016-10-041-266/+264
| | | | | | | | | This includes: - code style fixes - fix boards order within case sections Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* ar71xx: base-files: cleanups in etc/board.d/01_ledsPiotr Dymacz2016-10-041-173/+126
| | | | | | | | | This includes: - use of local 'board' variable in LED names, wherever possible - merge of boards with exactly the same LED configuration Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* ar71xx: fix LED names for GL Innovations boardsPiotr Dymacz2016-10-042-10/+10
| | | | Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* ar71xx: base-files: fix code style in etc/board.d/01_ledsPiotr Dymacz2016-10-041-160/+38
| | | | Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* ar71xx: base-files: combine boards with the same config in etc/diag.shPiotr Dymacz2016-10-041-62/+24
| | | | Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* ar71xx: base-files: cleanups in etc/diag.shPiotr Dymacz2016-10-041-120/+137
| | | | | | | | | This includes: - code style fixes - use of local 'board' variable in LED names, wherever possible Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* ar71xx: base-files: fix boards order in etc/board.d/02_networkPiotr Dymacz2016-10-041-231/+231
| | | | | | | | Keep everything in alphabetical order. Boards are ordered in two steps, first within/inside common configuration (case section), then sections, globally. Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* ar71xx: base-files: cleanups in etc/board.d/02_networkPiotr Dymacz2016-10-041-300/+177
| | | | | | | | | | | This includes: - code style fixes - removal of huge comment (it should be in doc, not here) and some small ones - removal of redundant config for DR531/WPJ531 as the default is the same - merge of boards with exactly the same interfaces config Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* ar71xx: base-files: rework etc/board.d/02_networkPiotr Dymacz2016-10-041-533/+554
| | | | | | | | | | Convert etc/board.d/02_network in ar71xx target to the same shape as we have in ramips target. Split code into two new functions: - interface/s setup in ar71xx_setup_interfaces() - MAC/s setup in ar71xx_setup_macs() Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* ar71xx: Do not use a hardcoded ath10k firmware mac addressMartin Blumenstingl2016-09-281-7/+10
| | | | | | | | | | | | | | | | | | | | | ar71xx has an init-script for special devices where the ath10k OTP calibration data is stored on the PCIe card's EEPROM (and thus can only be read by ath10k). Unfortunately the OTP data uses the default mac address (= all devices come with the same mac address, which leads to problems when you have multiple of these devices in the same network). To work around this the mac address is patched in the firmware during the first boot of the device. To prevent flash wear this was only done if the ath10k firmware matched a hardcoded md5sum. However, if the md5sum does not match this can mean that either the mac address was already patched (which is fine) - unfortunately it can also mean that the firmware version was updated without updating the hardcoded md5sum. Change the "was the mac address already patched" check to actually compare the mac address inside the ath10k firmware. Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
* ar71xx: add support for Cisco Meraki Z1 Cloud Managed Teleworker GatewayChris Blake2016-09-279-18/+90
| | | | | | | | | This patch adds support for Cisco's Z1. Detailed instructions for the flashing the device can be found in the OpenWrt wiki: <https://wiki.openwrt.org/toh/meraki/z1> Signed-off-by: Chris Blake <chrisrblake93@gmail.com>
* ar71xx: add model detection for many Ubiquiti AirMax XM devicesNeal Oakey2016-09-241-0/+36
| | | | | | Signed-off-by: Neal Oakey <neal.oakey@bingo-ev.de> [Matthias Schiffer: minor adjustments] Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
* treewide: remove bad local shell variable declarationsJo-Philipp Wich2016-09-241-2/+2
| | | | | | | Local variable declarations outside of functions are illegal since the Busybox update to v1.25.0, therfore remove them from the appropriate places. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
* cleanup ucidef_set_interface* usageMathias Kresin2016-09-101-2/+1
| | | | | | | | - quote the interface name - remove call of not existing function - remove the proto if it's the default proto Signed-off-by: Mathias Kresin <dev@kresin.me>
* ar71xx: add support for Zbtlink ZBT-WE1526Piotr Dymacz2016-08-185-1/+18
| | | | | | | | | | | | | | | | | | | | | Zbtlink ZBT-WE1526 is based on Qualcomm Atheros QCA9531 v2. Short specification: - 650/400/200 MHz (CPU/DDR/AHB) - 5x 10/100 Mbps Ethernet - 1x USB 2.0 - 128 MB of RAM (DDR2) - 16 MB of FLASH - 2T2R 2.4 GHz, up to 22 dBm - two external, non-detachable antennas - 8x LED, 1x button - UART header (pinout: VCC, RX, TX, GND) Flash instruction: Use sysupgrade in vendor firmare which is based on OpenWrt. Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
* ar71xx: fix profile name of Mercury MW4530RChuanhong Guo2016-08-151-1/+1
| | | | | | | | The mw4530r-v1 profile in tp-link.mk is for Mercury MW4530R. There is no such a device called TL-WDR4530. Also change MERCURY to Mercury in /lib/ar71xx.sh Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
* ar71xx: Make wget2nand look for LEDE project firmware filesdiizzyy2016-07-261-2/+2
| | | | | | Make wget2nand aware of the new file names Signed-off-by: Daniel Engberg <daniel.engberg.lists@pyret.net>
* ar71xx: don't use D-Link DIR-505 status LED as ethernet indicatorMatthias Schiffer2016-07-281-4/+0
| | | | | | | | | The stock firmware uses the single LED as status indicator only. Using the same LED both for status and as ethernet indicator is uncommon, and has been confusing users who were using the device as a WLAN mesh node (so the LED was just off, as no ethernet was connected). Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
* ar71xx: add revision detection for D-Link DIR-505 A1/A2Matthias Schiffer2016-07-281-0/+10
| | | | | | The A1 image also works on the A2, correctly set AR71XX_MODEL in this case. Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
* ar71xx: add a missing ;; to ar71xx.shJohn Crispin2016-07-241-0/+1
| | | | | | | | commit 42305ae24aa7 ("ar71xx: add support for gl-mifi") was missing a ;; breaking boot up Signed-off-by: John Crispin <john@phrozen.org>
* ar71xx: add support for gl-mifiZhao Gang2016-07-244-0/+11
| | | | | | | This add initial support for gl-mifi. Product page: http://www.gl-inet.com/mifi/ Signed-off-by: Zhao Gang <gang.zhao.42@gmail.com>
* ar71xx: fix default network config of WZR-HP-G300NH and CR3000Jo-Philipp Wich2016-07-201-2/+2
| | | | | | | | | | | The network defaults for the WZR-HP-G300NH and CR3000 models wrongly set the lan interface to a vlan tagged device while the switch was set up in untagged mode, leading to broken lan side ethernet connectivity by default. Fix the issue by emitting untagged interfaces, consistent with the switch setting on the device. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
* ar71xx: add support for gl-ar300mZhao Gang2016-07-205-0/+12
| | | | | | | This add initial support for gl-ar300m router. Product page: http://www.gl-inet.com/ar300m/ Signed-off-by: Zhao Gang <gang.zhao.42@gmail.com>