User Tools

Site Tools


projects:zsun-wifi-card-reader

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
projects:zsun-wifi-card-reader [2016/01/19 17:25] emerythprojects:zsun-wifi-card-reader [2020/02/12 16:14] (current) emeryth
Line 1: Line 1:
 +{{template>:template:project
 + | name=zsun-wifi-card-reader
 + | status=abandoned
 + | founder=[[user>emeryth]]
 + | repo=[[github>emeryth/source]] [[github>emeryth/openwrt-zsun]]
 +}}
 +
 ====== Hacking the Zsun WiFi SD Card Reader ====== ====== Hacking the Zsun WiFi SD Card Reader ======
-{{:projects:banner.jpg?nolink|}}+{{:projects:banner.jpg?nolink&700|}}
  
 The goal of this project is to learn as much as possible about the Zsun WiFi card reader and run OpenWrt on it to turn it into an awesome wifi device. The goal of this project is to learn as much as possible about the Zsun WiFi card reader and run OpenWrt on it to turn it into an awesome wifi device.
  
 +**UPDATE 2017-09-12** Info about LEDE and USB gadget working \\
 +**UPDATE 2016-11-28** Adding some more info about the new PCB revision, thanks to Erik Dorner, who sent me his analysis a long time ago \\
 +**UPDATE 2016-04-23** The new PCB is missing a jumper on the RX serial line, see serial port section \\
 +**UPDATE 2016-03-16** The second PCB revision has identical software and hardware (apart from optimized minor component layout), flashing works the same \\
 +**UPDATE 2016-03-12** We now know that there are at least two different PCB versions of the reader!  \\
 +**UPDATE 2016-02-21** github mirror at https://github.com/Emeryth/openwrt-zsun \\
 +**UPDATE 2016-01-27** informatic seems to have figured out how to use the original firmware's update function: [[projects:zsun-wifi-card-reader:factory-update|Zsun Card Reader Firmware Update Format]]
  
 === People Involved === === People Involved ===
Line 38: Line 52:
 \\ \\
 The device consists of two PCBs sandwiched together and connected via 8 pins.\\ The device consists of two PCBs sandwiched together and connected via 8 pins.\\
 +**WARNING** There are at least 2 PCB revisions, our original research was on the "old" revision, the "new" revision appeared in early 2016.
 +The new revision has optimized layout with some minor changes, software is identical. 
 +
 The bottom PCB contains only the SD card reader chip and SD slot, it can be safely removed without affecting operation. The bottom PCB contains only the SD card reader chip and SD slot, it can be safely removed without affecting operation.
 +**This is only true for the old PCB revision!** The new revision moved the 3.3V regulator to the PCB with the card reader.
 +
  
 === Serial Port === === Serial Port ===
Line 45: Line 64:
 Bitrate is 115200. Bitrate is 115200.
  
-Original firmware root password is "zsun1188"+Original firmware root password is "zsun1188" \\ 
 + 
 +The new PCB has a missing jumper that connects the serial RX testpad to the SoC. Short it or solder directly to the lower pad of the jumper to use serial. 
 +(The second missing resistor is a pull up/down, I guess) 
 + 
 +{{:projects:rx_jumper.jpg?direct&600|}} 
 + 
 +Thanks to Andreas H. for the clear picture of the new PCB.
  
 === Ethernet Port === === Ethernet Port ===
Line 52: Line 78:
 Use a Magjack or similar connector with magnetics.\\ Use a Magjack or similar connector with magnetics.\\
 This port is required for uploading images to u-boot.\\ This port is required for uploading images to u-boot.\\
 +
 +Here's how to properly connect the ethernet port, thanks to **Erik Dorner**: \\
 +
 +The AR9331 uses a current-mode line driver, which, in practical terms, means that the center taps of the primary coils of the Ethernet transformer must be connected to the PHY power supply voltage (2.0V for the AR9331).\\
 +The SoC is capable of producing this voltage, but it needs some external components (a general purpose PNP transistor and some filter/buffer capacitors) to do so.\\
 +Fortunately, the relevant pins of the AR9331 are also broken out as test points.\\
 +
 +{{:projects:zsun_how_to_connect_eth_tranformer.jpg?direct&800|}}
 +
 +If you don't care that much, you can connect 3.3V to the center taps, it should work.
  
 === USB switch === === USB switch ===
Line 89: Line 125:
  
 AR9331 is capable of working as a usb device (gadget). AR9331 is capable of working as a usb device (gadget).
-Unfortunately the code for that exists only as a patch for an old version of OpenWrt: +<del>Unfortunately the code for that exists only as a patch for an old version of OpenWrt: 
-http://neykov.name/posts/ar933x-usb-device-driver/+http://neykov.name/posts/ar933x-usb-device-driver/ </del> 
 + 
 +**The USB device/gadget patch has been added to mainline LEDE!** 
 + 
 +(It's not in the 17.01 stable release, though)
  
 So if you want to use the zsun as a USB gadget you will need to: So if you want to use the zsun as a USB gadget you will need to:
-  - Port the code  +  - <del>Port the code</del> Compile LEDE from source, look for more info in the LEDE section of this page 
-  - Remove the bootstrap resistor setting USB to host mode +  - Remove the G13 bootstrap resistor setting USB to host mode 
-  - Remove the card reader PCB and rewire the the USB signal pins+  - <del>Remove the card reader PCB and</del> (the card reader PCB now contains the 3.3V regulator, so you can't just remove it) rewire the the USB signal pins (the ones on the bottom right in the pictures) to a USB plug 
 + 
 + 
 +Here's what it looks like on the old PCB with the pins connected to the original USB plug:
  
 +{{:projects:usb_gadget.jpg?direct&600|}}
 ==== Original firmware ==== ==== Original firmware ====
  
Line 102: Line 146:
 Source: [[http://www.zoobab.com/zsun-sd11x-wifi-card-reader]] Source: [[http://www.zoobab.com/zsun-sd11x-wifi-card-reader]]
  
-Regular telnet won'work but you can connect using socat:+Regular telnet might not work (''netkit-telnet'' in Ubuntu 15.10 works fine) but you can connect using socat:
  
 <code> <code>
Line 137: Line 181:
 My OpenWrt port, based on the 15.05 "Chaos Calmer" release: \\ My OpenWrt port, based on the 15.05 "Chaos Calmer" release: \\
 https://code.hackerspace.pl/emeryth/openwrt_zsun/ https://code.hackerspace.pl/emeryth/openwrt_zsun/
 +
 +**You have to clone the "zsun" branch** \\
 +  git clone -b zsun https://code.hackerspace.pl/emeryth/openwrt_zsun/
 +
 +Github mirror:
 +https://github.com/Emeryth/openwrt-zsun 
  
 Compiled images and image builder: \\ Compiled images and image builder: \\
-https://owncloud.hackerspace.pl/index.php/s/7s5c5RDS7Njgwpv+<del>https://owncloud.hackerspace.pl/index.php/s/7s5c5RDS7Njgwpv</del> 
 +https://owncloud.hackerspace.pl/s/e4zWPZ8FqFMnrgk 
 + 
 +**You cannot use kernel modules from the official repository, use the image builder or compile them yourself if they're not included.**
  
 This port sticks to the original flash layout. \\ This port sticks to the original flash layout. \\
 I've added a few things to this port to make it more usable on the zsun without having to solder. I've added a few things to this port to make it more usable on the zsun without having to solder.
   * Wifi is enabled by default, AP mode, no encryption   * Wifi is enabled by default, AP mode, no encryption
-  * Entering failsafe will run a script that automatically does a factory rest+  * Entering failsafe will run a script that automatically does a factory reset
   * The SD card detect pin is registered as a button and will trigger failsafe when inserted/removed during boot   * The SD card detect pin is registered as a button and will trigger failsafe when inserted/removed during boot
   * The SD card reader is reset every time a card is inserted or removed   * The SD card reader is reset every time a card is inserted or removed
  
 +
 +==== LEDE ====
 +
 +https://forum.lede-project.org/t/supporting-zsun-wifi-card-reader-16mb-flash-64mb-ram-ar9331/2142
 +
 +I've made a quick port of LEDE:
 +https://github.com/Emeryth/source/tree/zsun
 +
 +**good news:**
 +It has USB gadget
 +
 +**bad news:**
 +The standard LEDE kernel is too big to fit in the original kernel partition.
 +You need to either change the bootloader and flash layout, or decrease the kernel image size by disabling things like debug symbols.
 +
 +
 +==== Backing up the original firmware ====
 +
 +\\
 +**YOU SHOULD DO THIS BEFORE ATTEMPTING TO FLASH** \\
 +At the end of the flash chip there is an "ART" partition that contains calibration data for wifi, you want to have a backup of this. \\
 +You can backup the entire flash over telnet by using dd.
 +
 +<code>dd if=/dev/mtd0 of=/tmp/mtd0.bin</code>
 +
 +**Do this with all the mtd partitions (mtd0 to mtd5)**
 +
 +Then make a symlink to /tmp in /etc/disk so you can download the files via the web interface.
 +
 +
 +<code> ln -s /tmp /etc/disk </code>
 ==== Flashing ==== ==== Flashing ====
  
Line 155: Line 239:
   - Reflash the firmware from the original firmware using mtd_write (easy but you have to do it right on the first try)   - Reflash the firmware from the original firmware using mtd_write (easy but you have to do it right on the first try)
   - Attach a programmer to the flash chip (impossible to mess up)   - Attach a programmer to the flash chip (impossible to mess up)
 +  - Use the original firmware's update function 
  
  
Line 169: Line 254:
 </code> </code>
  
-Where openwrt.bin is your rootfs+kernel image (in that order!).+Where openwrt.bin is your rootfs+kernel image (in that order! and the kernel must be at the correct offset!), that is **openwrt-ar71xx-generic-zsun-sdreader-squashfs-sysupgrade.bin** if you're using our image.
  
  
Line 183: Line 268:
 # serves files off your current directory, remember to chmod o+r files you'd like to use</code> # serves files off your current directory, remember to chmod o+r files you'd like to use</code>
  
-Then download your files onto zsun's /tmp (ramfs is mounted there), copy mtd_write to ramfs too, just to be safe, and write them with mtd_write.+Then download your files onto zsun's /tmp (ramfs is mounted there), just to be safe, and write them with mtd_write.
 Keep in mind **you have to flash kernel first**, since rootfs is used by running system. Keep in mind **you have to flash kernel first**, since rootfs is used by running system.
  
Line 217: Line 302:
  
 "//Bus error//" indicates system finished flashing, you can now just power cycle the device and wait for open "//OpenWRT//" network. First boot takes quite some time. "//Bus error//" indicates system finished flashing, you can now just power cycle the device and wait for open "//OpenWRT//" network. First boot takes quite some time.
 +
 +=== Using the original firmware's update function  ===
 +
 +Device can be flashed without any special tools even in Windows by copying special update package with SMB/Network Shares and opening two URLs. More information here:
 +[[projects:zsun-wifi-card-reader:factory-update|Zsun Card Reader Firmware Update Format]]
  
 ==== Pictures ==== ==== Pictures ====
Line 224: Line 314:
 {{:projects:zsun_inside.jpg?direct&400|}} {{:projects:zsun_inside.jpg?direct&400|}}
 {{:projects:zsun_bottom.jpg?direct&400|}} {{:projects:zsun_bottom.jpg?direct&400|}}
 +{{:projects:2zsuns.jpg?direct&400|}}
projects/zsun-wifi-card-reader.1453224335.txt.gz · Last modified: 2016/01/19 17:25 by emeryth

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki