Avalon nano

It's a usb dongle, using only one A3233.
== Hardware version 1.0 ==
=== Features ===
* VID/PID: 0x1FC9/0x0083
* Icarus protocol support
* It use USB CDC, without need driver installation under Linux
* Smart LED indicator
* Overheating protection. (>= 65℃)
* Adjust the hashrate automatically by temperature (~1.0GH/s - ~3.6GH/s)
Note: You may need install driver for windows before usage. Please down it here http://www.lpcware.com/system/files/lpcopen_examples_windows_usb_drivers_v1_10_0.zip
=== Software ===
It can support CGMiner, BFGMiner and AvalonMiner(Based on BFGMiner) for now.
==== CGMiner Under Ubuntu 14.04 ====
* Download / Compile / Run
 Download
 Inside your home directory, download CGMiner
 git clone https://github.com/Canaan-Creative/cgminer
 Compile
 cd cgminer
 git checkout origin/avalon-usb -b avalon-usb
 ./autogen.sh --enable-icarus
 make -j 4
 Run
 sudo ./cgminer --icarus-options 115200:1:1 --icarus-timing 0.22 -o http://stratum.pool:3333 -u work -p pass 
 or
 sudo ./cgminer --icarus-options 115200:1:1 --icarus-timing 0.22 -o http://stratum.pool:3333 -u work -p pass --api-allow W:192.168.2.1 --api-listen $@ 2>./log
* Patches
 Patch for Canaan Creative's CGMiner: 001-avalon3-nano.patch
 For what: CGMiner patch.
 From where: Based c5ec1171@https://github.com/Canaan-Creative/cgminer/tree/avalon2
 Comments: 
 	Support avalon3 nano in cgminer.
 	Support Icarus protocol.
==== BFGMiner ====
* Run
 Run under Linux
 ./bfgminer \
 -S ICA:/dev/ttyACMx \
 -o stratum+tcp://stratum.ozco.in:80 -O mikeqin.avalon:1234 \
 --set-device ICA:baud=115200 \
 --set-device ICA:reopen=timeout \
 --set-device ICA:work_division=1 \
 --set-device ICA:fpga_count=1 \
 --set-device ICA:probe_timeout=100 \
 --set-device ICA:timing=0.22 \
 --api-listen \
 2>log
 Run under Windows
 bfgminer.exe ^
 -S ICA:\\.\COMn ^
 -o stratum+tcp://stratum.ozco.in:80 -O mikeqin.avalon:1234 ^
 --set-device ICA:baud=115200 ^
 --set-device ICA:reopen=timeout ^
 --set-device ICA:work_division=1 ^
 --set-device ICA:fpga_count=1 ^
 --set-device ICA:probe_timeout=100 ^
 --set-device ICA:timing=0.22 ^
 --api-listen ^
 2>log
 
 Note: See the details about the timing in README. It works ~4GH/s(400 * 11.8) at 400MHz.
 timing = (1 / (4 * 10 ** 9)) * 10 ** 9 (python format)
* MHS Cur calculation
 MHS Cur = Diff1 Work * (Difficulty Accepted / (Difficulty Accepted + Difficulty Rejected + Difficulty Stale)) * 60/ Elapsed * 71582788 / 1000000
 Note：
 1.if Difficulty Accepted + Difficulty Rejected + Difficulty Stale = 0, then Difficulty Accepted / (Difficulty Accepted + Difficulty Rejected + Difficulty Stale) = 1.
 2.Get all the infomation through ./bfgminer-rpc -o summary
* BFGMiner release from luck.dashjr
 http://luke.dashjr.org/programs/bitcoin/files/bfgminer/
==== AvalonMiner ====
It is developed under Windows with Chinese UI only, You can import the solution and crack it by yourself. It is distributed under UNLICENSE.Source code can be download here: https://github.com/Canaan-Creative/Avalon-nano/tree/master/gui_1.0
===== Release =====
20140911
* Avalon3 nano windows miner(20140911)
* Beautifull GUI 
* Auto detect Avalon nano
20140803
* Avalon3 nano windows miner(20140803) first version
* Support bfgminer only
* Support icarus protocal
===== Run or Debug with CLI =====
# Copy BfgMiner to a safe place.
# Uninstall Avalon GUI Miner
# Modify the icadbg.cmd(under BfgMiner folder) with your correct com port.
# Double click icadbg.cmd.
Note: BFGMiner location: (C:\Program Files (x86)\Avalon Nano\BfgMiner)
=== Hardware ===
==== Schematics ====
* Avalon-usb schematics
==== LPC11U14 Spec ====
Type 	Infomation
Processor 	NXP's Cortex-M0 LPC11U14 microcontroller
Flash 	32 kB
Data Memory 	6 kB
Clock Crystals	12.000 MHz crystal for CPU
==== Clock ====
Type 	Value
LPC11U14 (External) 	48.000 MHz
A3233 XCLK (From LPC11U14)	24.000 MHz
==== LED ====
Color 	Memo
Green 	Idle status
Red/Blue 	Working (Frequency high -> low,led red -> blue)
Red blinking	Overheating
==== Programmer ====
* SmartPro 5000U-Plus
==== SWD Debuger ====
LPC11U14 only support swd debug.
The debugger can also be used to program the LPC11U14 chip.
===== LPCXpresso =====
* Installation and Activation
 LPCXpresso download link https://www.lpcware.com/lpcxpresso/download
 Free Edition is enough. Then activate it. http://www.lpcware.com/lpcxpresso/activate
* LPC-Link diagnostics
 Diagnostics when connecting to LPC-Link
 
 1. lpc-link info
 crt_emu_lpc11_13_nxp -info-emu -wire=winusb
 
 2. target info 
 crt_emu_lpc11_13_nxp -info-target -pLPC11U14/201 -wire=winusb -4
 
 3. burn and run axf file
 crt_emu_lpc11_13_nxp -pLPC11U14/201 -wire=winusb -flash-load-exec nxp_lpcxpresso_11u14_periph_blinky.axf
 
 4. info scan
 crt_emu_lpc11_13_nxp -info-scan -wire=winusb
 
 5. semi_host debug
 use newlib semihost
* How to debug issues with gdb (Works on OSX)
 Compile the souce with debug, then run gdb with the following commands:
 1.arm-none-eabi-gdb avalon_nano.axf
 2.target extended-remote | crt_emu_cm_redlink -g -2 -vendor=NXP -pLPC11U14/201 -flash-driver=LPC11_12_13_32K_4K.cfx
 3.load
* How to debug issues with gdb (Works on Ubuntu14.04)
 Compile the souce with debug, then run gdb with the following commands:
 1.arm-none-eabi-gdb avalon_nano.axf
 2.target extended-remote | crt_emu_lpc11_13_nxp -g -mi -2 -pLPC11U14/201 -vendor=NXP -e0 -wire=winUSB -flash-driver=LPC11_12_13_32K_4K.cfx
 3.load
 Then you can use gdb as you want
===== ULINK 2 =====
* Configure ULINK2 for LPCXpresso
 1.Change boot mode to CMSIS-DAP
 Use the Boot Mode Utility to change the mode like this: UL2_Configure B1.
 
 2.Set jumper to 3.3V position
 See Jumpers
 
 3.Connect Avalon nano to ULINK2
 Check SWD Connector Pinout, need connect SCLK,SWIO,GND only.
=== Firmware ===
==== Reflash ====
* Avalon3 nano firmware burner http://downloads.canaan-creative.com/software/avalon_nano/burner
==== Release ====
20140523
* Avalon3 nano firmware(20140523-dd84b993)
* Support nonce receive timeout check
* Support adjust freq for 100Mhz to 360Mhz,freq value after reset is 360Mhz
20140519
* Avalon3 nano firmware(20140519-8c38877c):first version
* Avalon3 nano test scripts found here:a3233_avalon_usb_testbench.sh
* Support adjust freq for 360Mhz to 400Mhz,value after reset is 400Mhz
* Include avalon3 nano module test(avalon_bsp_testben)
* bfgminer(0676fa314a9cc1491ad2e5f5c6a5e97f38fa67e3),how to run:http://wiki.0xf8.com/index.php/Bfgminer
NEXT-TESTING
* NOTICE: Only for testing
* Adjust LED color according to the temperature
=== Review ===
* https://bitcointalk.org/index.php?topic=1022764.0
=== Issues ===
* OpenOCD is not support ULINK2 (See src/jtag/drivers/ulink.c)
== Hardware version 2.0 ==
=== Features ===
* VID/PID: 0x29F1/0x33F3
* MM protocol support
* It use HID CDC, without need driver installation.
* Smart LED indicator
* Overheating protection. (>= 65℃)
* Adjust the hashrate automatically by temperature (~1.0GH/s - ~3.6GH/s)
* Current：0.018A ~ 0.917A
* Voltage：4.97V ~ 5.179V
=== Software ===
It can support Avalon miner, CGMiner for now.
==== Avalon miner ====
The easiest way to mining.
# Install from chrome web store
# Install from local crx
==== CGMiner Under Ubuntu 14.04 ====
* Download / Compile / Run
 Download
 Inside your home directory, download CGMiner
 git clone https://github.com/Canaan-Creative/cgminer
 Compile
 cd cgminer
 git checkout origin/avalon4 -b avalon4
 ./autogen.sh --enable-avalon-miner
 make -j 4
 Run
 sudo ./cgminer -o http://stratum.pool:3333 -u work -p pass
 or
 sudo ./cgminer -o http://stratum.pool:3333 -u work -p pass --api-allow W:192.168.2.1 --api-listen $@ 2>./log
=== Hardware ===
=== Firmware ===
==== Release ====
Daily Building
2015-08-25
* Avalon nano 2.0 firmware (3U1505-4481b7e0): first version
== References ==
== FAQ ==
* How to debug Avalon miner App under Chrome browser ?
# Enter the follow under the address bar.
#:chrome://extensions/
# Change to Developer mode in the right corner.
# Select Avalon miner background page, Enable console log in the Developer Tools. Filter: Status
#:utils.enableLog()
# Then open Avalon miner App, and update Pool Settings, then Enter mining.
You can check firmware version in the Miner App, and check the Status in the Developer Tools.
Don't forge update your device permission under Linux.
Under Ubuntu 14.04 LTS, you can add a rules under /etc/udev/rules.d, Make sure the user is a part of plugdev group
The content of the rules is :
SUBSYSTEMS=="usb", ATTRS{idVendor}=="29f1", ATTRS{idProduct}=="33f3", GROUP="plugdev"
== Links ==
* USBD ROM Stack
* LPC11U1X User Manual
* LPCOpen sourcecode
* LPCOpen docs
* LPC11U14 Rev A Schematic
* Errata sheet LPC11U1x
* Using command line GDB
* Baremetal programming
** http://eleceng.dit.ie/frank/arm/BareMetalLPC1114/index.html
** http://eewiki.net/display/microcontroller/Getting+Started+with+NXP%27s+LPC11XX+Cortex-M0+ARM+Microcontrollers
** http://tech.munts.com/MCU/Frameworks/RaspberryPi/expansion/LPC1114/
* ULINK2
** ULINK: How to downgrade the firmware of ULINK2/ME
** Firmware Upgrade Utility
** Hardware Checklist
** Program Flash Example
* LPC-Link
** Booting LPC-Link
** Diagnostics when connecting to LPC-Link
* About CMSIS-DAP
* Porting the CMSIS-DAP debugger to the Cortex-M0 platform
* LPC11U14 ARM Cortex-M0 Board
* In-Application Programming (IAP) Code Example
* Software for flashing / upgrading firmware
** LPCXpresso (SWD method)
* Target Connectors
* Regaining debug access to target MCU