<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.bitcoin.it/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Johnson-Fan</id>
	<title>Bitcoin Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://en.bitcoin.it/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Johnson-Fan"/>
	<link rel="alternate" type="text/html" href="https://en.bitcoin.it/wiki/Special:Contributions/Johnson-Fan"/>
	<updated>2026-05-14T16:55:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=61396</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=61396"/>
		<updated>2016-07-31T09:18:40Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* Modify dfu-util For Ubuntu 14.04 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
  Hashrate: 3.5Ths ± 5%&lt;br /&gt;
  Power Consumption: ≈ 1050 Watt (with assumption of 90% power conversion ratio)&lt;br /&gt;
  Overclocking: Support automatically optimizes frequency, no need to overclock manually.&lt;br /&gt;
  PSU ouput pin: 4 x 6PIN PCIe power connector.&lt;br /&gt;
  Controller: Raspberry Pi (version B or B+) Raspberry Pi 2 is not supported yet.&lt;br /&gt;
  AUC: Each AUC can connect up to 6 devices.&lt;br /&gt;
  Dimensions: 340 mm x 136 mm x 150 mm&lt;br /&gt;
  Operating Temperature: -10 °C to 38°C&lt;br /&gt;
  Fan Specs: 12038, Current less then 2.4A&lt;br /&gt;
  Protection Degree: IP20&lt;br /&gt;
  Net weight: 4.8kg&lt;br /&gt;
  Gross weight: 5kg&lt;br /&gt;
&lt;br /&gt;
== Pictures ==&lt;br /&gt;
=== Control board ===&lt;br /&gt;
[[File: AvalonMiner6_CTRL.png | none | 640 px]]&lt;br /&gt;
* NC means not connect&lt;br /&gt;
&lt;br /&gt;
=== Fan &amp;amp; Temp control algorithm ===&lt;br /&gt;
* RPi firmware 20160530&lt;br /&gt;
  [[File:Avalon6 fan adj 601605-256e0f00.png | none | 640px]]&lt;br /&gt;
*  RPi firmware 20160125&lt;br /&gt;
  [[File:Avalon6 fan adj 601601-5d8a1270.png | none | 640px]]&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
=== Avalon6 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUC2 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IIC ==&lt;br /&gt;
[[File:IIC_Link_Avalon6.png]]&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[https://canaan.io/downloads/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 65536&lt;br /&gt;
| CODE_LOCK&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run without decrypt&lt;br /&gt;
| Ask service for help&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 131072&lt;br /&gt;
| CODE_HOTBEFORE&lt;br /&gt;
| WARN&lt;br /&gt;
| Toohot is found on MM&lt;br /&gt;
| It&#039;s just a note on toohot&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 262144&lt;br /&gt;
| CODE_APIFIFOOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| API fifo overflow flag&lt;br /&gt;
| It&#039;s just a note on api fifo&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [https://canaan.io/downloads/software/avalon6/openwrt/20160726/ 20160726] ===&lt;br /&gt;
* Support Raspberry Pi 3 Model B&lt;br /&gt;
* Sync with OpenWrt master branch (cac971da)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20160530/ 20160530] ===&lt;br /&gt;
* CGMiner:Add more options to optimize hashrate when toohot occus.&lt;br /&gt;
* CGMiner:Support AV4 miner detect through iic&lt;br /&gt;
* CGMiner:Double check data size when use avalon4_auc_xfer&lt;br /&gt;
* CGMiner:Update adjust_fan to avoid fan overshoot, Thanks to ckolivas&lt;br /&gt;
* CGMiner:Update default target temperature for AvalonMiner 6.(68℃ to 65℃)&lt;br /&gt;
* CGMiner:Support 6 machines maximum on a AUC&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20160125/ 20160125] ===&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option (mode 3), and change it to default.&lt;br /&gt;
* Update mm count when scan hash&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* Notice: Only for testing purpose&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [https://canaan.io/downloads/software/avalon6/mm/2016-07-15/ 2016-07-15] ===&lt;br /&gt;
* Version: &#039;&#039;&#039;601607-2a78bc90&#039;&#039;&#039;&lt;br /&gt;
* Fix: 50% off hash rate bug&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2016-05-11/ 2016-05-11] ===&lt;br /&gt;
* Version: &#039;&#039;&#039;601605-256e0f00&#039;&#039;&#039;&lt;br /&gt;
* The minimum stratum pool difficulty should &amp;gt;= 32 for better performance&lt;br /&gt;
* Check api fifo overflow&lt;br /&gt;
* Add CODE_HOTBEFORE for hot notify&lt;br /&gt;
* Add a new package AVA4_P_SET_FREQ&lt;br /&gt;
* Support device hardware error&lt;br /&gt;
* Fix duplicate share&lt;br /&gt;
* Move stratum file to a lib&lt;br /&gt;
* Update temp check&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2016-01-25/ 2016-01-25] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601601-5d8a1270&#039;&#039;&#039;&lt;br /&gt;
* Add mm package header verify&lt;br /&gt;
* Update pll couter for separate module&lt;br /&gt;
* Update iic address free mechanism&lt;br /&gt;
* Update fan rpm detect&lt;br /&gt;
* Fix duplicate address during detect&lt;br /&gt;
* Fix freq setting lost cause by mm was toot&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* Notice: Only for testing purpose&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
* Download &amp;amp; Compile&lt;br /&gt;
# git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
# cd cgminer&lt;br /&gt;
# git checkout origin/avalon4 -b avalon4&lt;br /&gt;
# ./autogen.sh --enable-avalon4&lt;br /&gt;
# make -j 4&lt;br /&gt;
&lt;br /&gt;
* Run&lt;br /&gt;
# Run with AUC&lt;br /&gt;
#;sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
#;or&lt;br /&gt;
#;sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
#;&lt;br /&gt;
# Run with AUC and IIC interface&lt;br /&gt;
#;sudo ./cgminer --avalon4-iic-detect --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
#;or&lt;br /&gt;
#;sudo ./cgminer --avalon4-iic-detect --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./logA&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
==== Support USB-DFU Mode ====&lt;br /&gt;
 We can use dfu-util under Ubuntu 14.04 or later updata new firmware for AUC2.&lt;br /&gt;
&lt;br /&gt;
==== Using USB-DFU Protocol ====&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Device Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
!Offset!!Field!!Size!!Value!!Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 12h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 01h || DEVICE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bcdUSB || 2 || 0100h || USB specification release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bDeviceClass || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bDeviceSubClass || 1 || 00h || See interface&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bDeviceProtocol || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bMaxPacketSize0 || 1 || 8,16,32,64 || Maximum packet size for endpoint.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || idVendor || 2 || ID || Vendor ID. Assigned by the USB-IF.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || idProduct || 2 || ID || Product ID. Assigned by manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || bcdDevice || 2 || BCD || Device release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 14 || iManufacturer || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 15 || iProduct || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || iSerialNumber || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || bNumConfigurations || 1 || 01h || One configuration only for DFU. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 01h || Runtime protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Functional Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 21h || DFU FUNCTIONAL descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bmAttributes || 1 || Bit mask || DFU attributes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 7……4: reserved&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 3: device will perform a bus detach-attach sequence when it receives a DFU_DETACH request. The host must not issue a USB Reset. (bitWillDetach)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 2: device is able to communicate via USB afeter Manifestation phase.(bitManifestationTolerant)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no, must see bus reset&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit1: upload capable(bitCanUpload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit0: download capable(bitCanDnload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || wDetachTimeOut || 2 || Number || Time,in milliseconds, that the device will wait after receipt of the DFU_DETACH request. if this time elapses without a USB reaset, then the device will terminate the Reconfiguration phase and revert back to normal operation . This repreents the maximum time that the device can wait(depending on its timers, etc.).The host may specify a shorter timeout in the DFU_DETACH request.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || wTransferSize || 2 || Number || Maximum number of bytes that the device can accept per control-write transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bcdDFUVersion || 2 || BCD || Numeric expression identifying the version of the DFU Specification release.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Mode Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 02h || DFU mode protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== USB-DFU Product&#039;s USB Descriptor ====&lt;br /&gt;
[[File:USB-DFU Descriptor.png]]&lt;br /&gt;
&lt;br /&gt;
==== DFU Updata Process Diagram ====&lt;br /&gt;
[[File:UpdataProcess.png]]&lt;br /&gt;
&lt;br /&gt;
==== Judge Updating Program Or Application Program ====&lt;br /&gt;
 I used a updata flag which is a four bytes word and is writed at fixd flash address (0x8000 - 4)&lt;br /&gt;
&lt;br /&gt;
 The flag&#039;s value is 0xAABBCCDD&lt;br /&gt;
&lt;br /&gt;
 When the bootloader program run, first it judge the updata flag, if the updata falg is not equal 0xAABBCCDD, it will jump to application program.&lt;br /&gt;
 Otherwise it will run to updata program.&lt;br /&gt;
&lt;br /&gt;
==== Jump To Application Program ====&lt;br /&gt;
 When we don&#039;t want to updata application program, the bootloader program should run to application program.&lt;br /&gt;
&lt;br /&gt;
 In order to achieve this goal, we can add under code in your bootloader program.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4000&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4000 is my application program&#039;s MSP point, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov sp, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4004&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4004 is my application program reset-function entry address, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov pc, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modify dfu-util For Ubuntu 14.04 ====&lt;br /&gt;
 #Inside your home directory, download dfu-util&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.openezx.org/dfu-util.git&lt;br /&gt;
&lt;br /&gt;
 cd dfu-util&lt;br /&gt;
&lt;br /&gt;
 wget https://raw.githubusercontent.com/Johnson-Fan/Avalon-USB-converter/master/patches/001-add-milli_sleep.patch&lt;br /&gt;
&lt;br /&gt;
 patch -p0 &amp;lt; 001-add-milli_sleep.patch&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
 The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
&lt;br /&gt;
=== Add DFU In AUC2 Firmware ===&lt;br /&gt;
==== Modify The AUC2 Firmware Flash And RAM Address ====&lt;br /&gt;
 1. We modify the Flash start address at 0x4000, because the bootloader&#039;s size is 0x4000.&amp;lt;br /&amp;gt;&lt;br /&gt;
 2. We modify the RAM start address at 0x10000200, because we remap the NVIC table at the RAM 0x10000000,&lt;br /&gt;
    and the NVIC table size is 0x200 bytes.&amp;lt;br /&amp;gt;&lt;br /&gt;
 3. We modify the *.ld file. And my *.ld file is avalon-usb-converter.ld, you can find your *.ld file.&lt;br /&gt;
:{|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;big&amp;gt;Before Modification&amp;lt;/big&amp;gt;&lt;br /&gt;
! &amp;lt;big&amp;gt;After  Modification&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|MEMORY&lt;br /&gt;
{&lt;br /&gt;
    /* Define each memory region */&lt;br /&gt;
&lt;br /&gt;
    MFlash32 (rx) : ORIGIN = 0x0, LENGTH = 0x8000 	/* 32K bytes */&lt;br /&gt;
    RamLoc4 (rwx) : ORIGIN = 0x10000000, LENGTH = 0x1000 /* 4K bytes */&lt;br /&gt;
    RamUsb2 (rwx) : ORIGIN = 0x20004000, LENGTH = 0x800 /* 2K bytes */&lt;br /&gt;
}&lt;br /&gt;
    /* Define a symbol for the top of each memory region */&lt;br /&gt;
&lt;br /&gt;
    __top_MFlash32 = 0x0 + 0x8000;&lt;br /&gt;
    __top_RamLoc4 = 0x1000000 + 0x1000;&lt;br /&gt;
    __top_RamUsb2 = 0x20004000 + 0x800;&lt;br /&gt;
|MEMORY&lt;br /&gt;
{&lt;br /&gt;
    /* Define each memory region */&lt;br /&gt;
&lt;br /&gt;
    MFlash32 (rx) : ORIGIN = 0x4000, LENGTH = 0x4000 	/* 16K bytes */&lt;br /&gt;
    RamLoc4 (rwx) : ORIGIN = 0x10000200, LENGTH = 0xe00 /* 3.5K bytes */&lt;br /&gt;
    RamUsb2 (rwx) : ORIGIN = 0x20004000, LENGTH = 0x800 /* 2K bytes */&lt;br /&gt;
}&lt;br /&gt;
    /* Define a symbol for the top of each memory region */&lt;br /&gt;
&lt;br /&gt;
    __top_MFlash32 = 0x4000 + 0x4000;&lt;br /&gt;
    __top_RamLoc4 = 0x10000200 + 0xe00;&lt;br /&gt;
    __top_RamUsb2 = 0x20004000 + 0x800;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Remap The NVIC Table ====&lt;br /&gt;
 1. Add Under Function Code In Your Program.&lt;br /&gt;
&lt;br /&gt;
    /* copy the nvic table to ram */&lt;br /&gt;
    static void copy_nvic_to_ram(void)&lt;br /&gt;
    {&lt;br /&gt;
        volatile uint32_t *dst, size;&lt;br /&gt;
        volatile const uint32_t *src;&amp;lt;br /&amp;gt;&lt;br /&gt;
        src = (volatile uint32_t *)APP_START_ADDR;//APP_START_ADDR Is The Application Program&#039;s Start Address. &lt;br /&gt;
        dst = (volatile uint32_t *)RAM_START_ADDR;//RAM_START_ADDR Is The RAM Start Address.&lt;br /&gt;
        size = NVIC_TABLE_LEN &amp;gt;&amp;gt; 2;//NVIC_TABLE_LEN Is The NVIC Table&#039;s Size.&lt;br /&gt;
        do {&lt;br /&gt;
            *dst++ = *src++;&lt;br /&gt;
        } while (--size);&amp;lt;br /&amp;gt;&lt;br /&gt;
        /* NVIC remap to RAM */&lt;br /&gt;
        Chip_SYSCTL_Map(0x01);&amp;lt;br /&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
 2. Config The Register To Remap NVIC Table To RAM&lt;br /&gt;
:[[File:LPC11u14 NVIC Table Remap1.png | none | 640px ]]&lt;br /&gt;
 &amp;lt;big&amp;gt;&amp;lt;big&amp;gt;More See UM10462 LPC11U3x/2x/1x User manual,At The Page 22.&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Issues ===&lt;br /&gt;
&amp;lt;big&amp;gt;1. About Bootloader USB Descriptor:&amp;lt;/big&amp;gt;&lt;br /&gt;
 Note the DFU Functional Descriptor&#039; wTransferSize size, It must equal the USBD_DFU_INIT_PARAM_T&#039;s wTransferSize.&lt;br /&gt;
&amp;lt;big&amp;gt;2. About IAP Transmission Data Size &amp;lt;/big&amp;gt;&lt;br /&gt;
 The data size should be 256 or 512 or 1024 or 4096 Bytes.&lt;br /&gt;
&amp;lt;big&amp;gt;3. About IAP Transmission Data Address &amp;lt;/big&amp;gt;&lt;br /&gt;
 The data address should be a 256 byte boundary.&lt;br /&gt;
&amp;lt;big&amp;gt;3. Why sometimes updata failed ?&amp;lt;/big&amp;gt;&lt;br /&gt;
 Now, I didn&#039;t find the real reason. But, I think the reason is the time of communication is not correct. &lt;br /&gt;
&amp;lt;big&amp;gt;3. Why sometimes updata finished, but the program don&#039;t run normally ?&amp;lt;/big&amp;gt;&lt;br /&gt;
 I think that I didn&#039;t check the flash address and the data address are right.&amp;lt;br /&amp;gt;&lt;br /&gt;
 I will add the check in the program later.&lt;br /&gt;
&lt;br /&gt;
=== References And Links ===&lt;br /&gt;
* [https://www.lpcware.com/lpcxpresso/download LPCXpress IDE Download]&lt;br /&gt;
* [http://www.usb.org/developers/docs/devclass_docs/DFU_1.1.pdf See More About DFU Protocol]&lt;br /&gt;
* [https://github.com/Canaan-Creative/Avalon-USB-converter Source Code]&lt;br /&gt;
* [http://docs.lpcware.com/usbromlib/v1.0/ USBD ROM Stack]&lt;br /&gt;
* [http://www.nxp.com/documents/user_manual/UM10462.pdf LPC11U1X User Manual]&lt;br /&gt;
* [http://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc11xx-packages-0 LPCOpen sourcecode]&lt;br /&gt;
* [http://docs.lpcware.com/lpcopen/v1.03/ LPCOpen docs]&lt;br /&gt;
* [http://www.lpcware.com/system/files/LPCXpressoLPC11U14revA_0.pdf LPC11U14 Rev A Schematic]&lt;br /&gt;
* [http://www.nxp.com/documents/errata_sheet/ES_LPC11U1X.pdf Errata sheet LPC11U1x]&lt;br /&gt;
* [http://support.code-red-tech.com/CodeRedWiki/UsingGDB?highlight=%28LPC\-Link%29 Using command line GDB]&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
# Upgrade OpenWrt branch to master&lt;br /&gt;
# Commit cgminer package for OpenWrt packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;br /&gt;
3. AUC always appear and then disappear in CGMiner status ?&lt;br /&gt;
  It maybe damaged. Take a new one instead.&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon_nano&amp;diff=61193</id>
		<title>Avalon nano</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon_nano&amp;diff=61193"/>
		<updated>2016-06-17T00:14:49Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* LPCXpresso */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It&#039;s a usb dongle, using only one A3233.&lt;br /&gt;
&lt;br /&gt;
== Hardware version 1.0 ==&lt;br /&gt;
=== Features ===&lt;br /&gt;
* VID/PID: 0x1FC9/0x0083&lt;br /&gt;
* Icarus protocol support&lt;br /&gt;
* It use USB CDC, without need driver installation under Linux&lt;br /&gt;
* Smart [[#LED|LED]] indicator&lt;br /&gt;
* Overheating protection. (&amp;gt;= 65℃)&lt;br /&gt;
* Adjust the hashrate automatically by temperature (~1.0GH/s -  ~3.6GH/s)&lt;br /&gt;
&lt;br /&gt;
Note:  You may need install driver for windows before usage. Please down it here &amp;lt;ref&amp;gt;http://www.lpcware.com/system/files/lpcopen_examples_windows_usb_drivers_v1_10_0.zip&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
It can support CGMiner, BFGMiner and AvalonMiner(Based on BFGMiner) for now.&lt;br /&gt;
==== CGMiner Under Ubuntu 14.04 ====&lt;br /&gt;
* Download / Compile / Run&lt;br /&gt;
 &#039;&#039;&#039;Download&#039;&#039;&#039;&lt;br /&gt;
 Inside your home directory, download CGMiner&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Compile&#039;&#039;&#039;&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon-usb -b avalon-usb&lt;br /&gt;
 ./autogen.sh --enable-icarus&lt;br /&gt;
 make -j 4&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Run&#039;&#039;&#039;&lt;br /&gt;
 sudo ./cgminer --icarus-options 115200:1:1 --icarus-timing 0.22 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 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&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
* Patches&lt;br /&gt;
 Patch for Canaan Creative&#039;s CGMiner: [http://downloads.canaan-creative.com/software/avalon_nano/patches/001-avalon3-nano.patch 001-avalon3-nano.patch]&lt;br /&gt;
 For what: CGMiner patch.&lt;br /&gt;
 From where: Based c5ec1171@https://github.com/Canaan-Creative/cgminer/tree/avalon2&lt;br /&gt;
 Comments: &lt;br /&gt;
  	Support avalon3 nano in cgminer.&lt;br /&gt;
  	Support Icarus protocol.&lt;br /&gt;
&lt;br /&gt;
==== BFGMiner ====&lt;br /&gt;
* Run&lt;br /&gt;
  &#039;&#039;&#039;Run under Linux&#039;&#039;&#039;&lt;br /&gt;
  ./bfgminer \&lt;br /&gt;
        -S ICA:/dev/ttyACMx \&lt;br /&gt;
        -o stratum+tcp://stratum.ozco.in:80 -O mikeqin.avalon:1234 \&lt;br /&gt;
        --set-device ICA:baud=115200 \&lt;br /&gt;
        --set-device ICA:reopen=timeout \&lt;br /&gt;
        --set-device ICA:work_division=1 \&lt;br /&gt;
        --set-device ICA:fpga_count=1 \&lt;br /&gt;
        --set-device ICA:probe_timeout=100 \&lt;br /&gt;
        --set-device ICA:timing=0.22 \&lt;br /&gt;
        --api-listen \&lt;br /&gt;
        2&amp;gt;log&lt;br /&gt;
&lt;br /&gt;
  &#039;&#039;&#039;Run under Windows&#039;&#039;&#039;&lt;br /&gt;
  bfgminer.exe ^&lt;br /&gt;
        -S ICA:\\.\COMn ^&lt;br /&gt;
        -o stratum+tcp://stratum.ozco.in:80 -O mikeqin.avalon:1234 ^&lt;br /&gt;
        --set-device ICA:baud=115200 ^&lt;br /&gt;
        --set-device ICA:reopen=timeout ^&lt;br /&gt;
        --set-device ICA:work_division=1 ^&lt;br /&gt;
        --set-device ICA:fpga_count=1 ^&lt;br /&gt;
        --set-device ICA:probe_timeout=100 ^&lt;br /&gt;
        --set-device ICA:timing=0.22 ^&lt;br /&gt;
        --api-listen ^&lt;br /&gt;
        2&amp;gt;log&lt;br /&gt;
  &lt;br /&gt;
  Note: See the details about the timing in README. It works ~4GH/s(400 * 11.8) at 400MHz.&lt;br /&gt;
  timing = (1 / (4 * 10 ** 9)) * 10 ** 9 (python format)&lt;br /&gt;
&lt;br /&gt;
* MHS Cur calculation&lt;br /&gt;
  MHS Cur = Diff1 Work * (Difficulty Accepted / (Difficulty Accepted + Difficulty Rejected + Difficulty Stale)) * 60/ Elapsed * 71582788 / 1000000&lt;br /&gt;
  Note：&lt;br /&gt;
  1.if Difficulty Accepted + Difficulty Rejected + Difficulty Stale = 0, then Difficulty Accepted / (Difficulty Accepted + Difficulty Rejected + Difficulty Stale) = 1.&lt;br /&gt;
  2.Get all the infomation through ./bfgminer-rpc -o summary&lt;br /&gt;
&lt;br /&gt;
* BFGMiner release from luck.dashjr&lt;br /&gt;
  http://luke.dashjr.org/programs/bitcoin/files/bfgminer/&lt;br /&gt;
&lt;br /&gt;
==== AvalonMiner ====&lt;br /&gt;
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: &amp;lt;ref&amp;gt;https://github.com/Canaan-Creative/Avalon-nano/tree/master/gui_1.0&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Release =====&lt;br /&gt;
[http://downloads.canaan-creative.com/software/avalon_nano/software/20140911/ 20140911]&lt;br /&gt;
* Avalon3 nano windows miner(20140911)&lt;br /&gt;
* Beautifull GUI &lt;br /&gt;
* Auto detect Avalon nano&lt;br /&gt;
&lt;br /&gt;
[http://downloads.canaan-creative.com/software/avalon_nano/software/20140803/ 20140803]&lt;br /&gt;
* Avalon3 nano windows miner(20140803) first version&lt;br /&gt;
* Support bfgminer only&lt;br /&gt;
* Support icarus protocal&lt;br /&gt;
&lt;br /&gt;
===== Run or Debug with CLI =====&lt;br /&gt;
# Copy BfgMiner to a safe place.&lt;br /&gt;
# Uninstall Avalon GUI Miner&lt;br /&gt;
# Modify the icadbg.cmd(under BfgMiner folder) with your correct com port.&lt;br /&gt;
# Double click icadbg.cmd.&lt;br /&gt;
Note: BFGMiner location: (C:\Program Files (x86)\Avalon Nano\BfgMiner)&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
==== Schematics ====&lt;br /&gt;
* [http://downloads.canaan-creative.com/software/avalon_nano/doc/sch/Avalon_usb_sch.pdf Avalon-usb schematics]&lt;br /&gt;
&lt;br /&gt;
==== LPC11U14 Spec ====&lt;br /&gt;
{| class=&#039;wikitable&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Type || Infomation&lt;br /&gt;
|-&lt;br /&gt;
| Processor || NXP&#039;s Cortex-M0 LPC11U14 microcontroller&lt;br /&gt;
|-&lt;br /&gt;
| Flash || 32 kB&lt;br /&gt;
|-  &lt;br /&gt;
| Data Memory || 6 kB&lt;br /&gt;
|-&lt;br /&gt;
| Clock Crystals || 12.000 MHz crystal for CPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Clock ====&lt;br /&gt;
{| class=&#039;wikitable&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Type  ||  Value&lt;br /&gt;
|-&lt;br /&gt;
| LPC11U14 (External)    ||   48.000 MHz &lt;br /&gt;
|-&lt;br /&gt;
| A3233 XCLK (From LPC11U14)  ||   24.000 MHz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== LED ====&lt;br /&gt;
{| class=&#039;wikitable&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Color || Memo&lt;br /&gt;
|-&lt;br /&gt;
| Green || Idle status&lt;br /&gt;
|-&lt;br /&gt;
| Red/Blue || Working (Frequency high -&amp;gt; low,led red -&amp;gt; blue)&lt;br /&gt;
|-&lt;br /&gt;
| Red blinking || Overheating&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Programmer ====&lt;br /&gt;
* SmartPro 5000U-Plus&lt;br /&gt;
&lt;br /&gt;
==== SWD Debuger ====&lt;br /&gt;
LPC11U14 only support swd debug.&lt;br /&gt;
The debugger can also be used to program the LPC11U14 chip.&lt;br /&gt;
===== LPCXpresso =====&lt;br /&gt;
* Installation and Activation&lt;br /&gt;
  LPCXpresso download link &amp;lt;ref&amp;gt;https://www.lpcware.com/lpcxpresso/download&amp;lt;/ref&amp;gt;&lt;br /&gt;
  Free Edition is enough. Then activate it. &amp;lt;ref&amp;gt;http://www.lpcware.com/lpcxpresso/activate&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* LPC-Link diagnostics&lt;br /&gt;
  Diagnostics when connecting to LPC-Link&lt;br /&gt;
  &lt;br /&gt;
  1.  lpc-link info&lt;br /&gt;
  crt_emu_lpc11_13_nxp -info-emu -wire=winusb&lt;br /&gt;
  &lt;br /&gt;
  2.  target info &lt;br /&gt;
  crt_emu_lpc11_13_nxp -info-target -pLPC11U14/201 -wire=winusb -4&lt;br /&gt;
  &lt;br /&gt;
  3. burn and run axf file&lt;br /&gt;
  crt_emu_lpc11_13_nxp -pLPC11U14/201 -wire=winusb -flash-load-exec nxp_lpcxpresso_11u14_periph_blinky.axf&lt;br /&gt;
  &lt;br /&gt;
  4. info scan&lt;br /&gt;
  crt_emu_lpc11_13_nxp -info-scan -wire=winusb&lt;br /&gt;
  &lt;br /&gt;
  5. semi_host debug&lt;br /&gt;
  use newlib semihost&lt;br /&gt;
&lt;br /&gt;
* How to debug issues with gdb (Works on OSX)&lt;br /&gt;
    Compile the souce with debug, then run gdb with the following commands:&lt;br /&gt;
    1.arm-none-eabi-gdb avalon_nano.axf&lt;br /&gt;
    2.target extended-remote | crt_emu_cm_redlink -g -2 -vendor=NXP -pLPC11U14/201 -flash-driver=LPC11_12_13_32K_4K.cfx&lt;br /&gt;
    3.load&lt;br /&gt;
&lt;br /&gt;
* How to debug issues with gdb (Works on Ubuntu14.04)&lt;br /&gt;
    Compile the souce with debug, then run gdb with the following commands:&lt;br /&gt;
    1.arm-none-eabi-gdb avalon_nano.axf&lt;br /&gt;
    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&lt;br /&gt;
    3.load&lt;br /&gt;
&lt;br /&gt;
    Then you can use gdb as you want&lt;br /&gt;
&lt;br /&gt;
===== ULINK 2 =====&lt;br /&gt;
* Configure ULINK2 for LPCXpresso&lt;br /&gt;
 1.Change boot mode to CMSIS-DAP&lt;br /&gt;
 Use the [http://www.keil.com/support/man/docs/ulink2/ulink2_boot_mode.htm Boot Mode Utility] to change the mode like this: UL2_Configure B1.&lt;br /&gt;
 &lt;br /&gt;
 2.Set jumper to 3.3V position&lt;br /&gt;
 See [http://www.keil.com/support/man/docs/ulink2/ulink2_hw_jumpers.htm  Jumpers]&lt;br /&gt;
 &lt;br /&gt;
 3.Connect Avalon nano to ULINK2&lt;br /&gt;
 Check [http://support.code-red-tech.com/CodeRedWiki/HardwareDebugConnections SWD Connector Pinout], need connect SCLK,SWIO,GND only.&lt;br /&gt;
&lt;br /&gt;
=== Firmware ===&lt;br /&gt;
==== Reflash ====&lt;br /&gt;
* Avalon3 nano firmware burner &amp;lt;ref&amp;gt;http://downloads.canaan-creative.com/software/avalon_nano/burner&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Release ====&lt;br /&gt;
[http://downloads.canaan-creative.com/software/avalon_nano/firmware/20140523/ 20140523]&lt;br /&gt;
* Avalon3 nano firmware(20140523-dd84b993)&lt;br /&gt;
* Support nonce receive timeout check&lt;br /&gt;
* Support adjust freq for 100Mhz to 360Mhz,freq value after reset is 360Mhz&lt;br /&gt;
&lt;br /&gt;
[http://downloads.canaan-creative.com/software/avalon_nano/firmware/20140519/ 20140519]&lt;br /&gt;
* Avalon3 nano firmware(20140519-8c38877c):first version&lt;br /&gt;
* Avalon3 nano test scripts found here:[https://github.com/BitSyncom/avalon-extras/tree/master/scripts a3233_avalon_usb_testbench.sh]&lt;br /&gt;
* Support adjust freq for 360Mhz to 400Mhz,value after reset is 400Mhz&lt;br /&gt;
* Include avalon3 nano module test(avalon_bsp_testben)&lt;br /&gt;
* bfgminer(0676fa314a9cc1491ad2e5f5c6a5e97f38fa67e3),how to run:http://wiki.0xf8.com/index.php/Bfgminer&lt;br /&gt;
&lt;br /&gt;
[http://downloads.canaan-creative.com/software/avalon_nano/firmware/nexttesting/ NEXT-TESTING]&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Adjust LED color according to the temperature&lt;br /&gt;
&lt;br /&gt;
=== Review ===&lt;br /&gt;
* https://bitcointalk.org/index.php?topic=1022764.0&lt;br /&gt;
&lt;br /&gt;
=== Issues ===&lt;br /&gt;
* OpenOCD is not support ULINK2 (See src/jtag/drivers/ulink.c)&lt;br /&gt;
&lt;br /&gt;
== Hardware version 2.0 ==&lt;br /&gt;
=== Features ===&lt;br /&gt;
* VID/PID: 0x29F1/0x33F3&lt;br /&gt;
* [https://github.com/Canaan-Creative/MM/blob/avalon4/firmware/doc/protocol.md MM protocol] support&lt;br /&gt;
* It use HID CDC, without need driver installation.&lt;br /&gt;
* Smart [[#LED|LED]] indicator&lt;br /&gt;
* Overheating protection. (&amp;gt;= 65℃)&lt;br /&gt;
* Adjust the hashrate automatically by temperature (~1.0GH/s -  ~3.6GH/s)&lt;br /&gt;
* Current：0.018A ~ 0.917A&lt;br /&gt;
* Voltage：4.97V ~ 5.179V&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
It can support Avalon miner, CGMiner for now.&lt;br /&gt;
==== Avalon miner ====&lt;br /&gt;
The easiest way to mining.&lt;br /&gt;
# [https://chrome.google.com/webstore/detail/avalon-miner/odlgkocclgbbahkiajhldmlbmefpcjnc?hl=en-US Install from chrome web store]&lt;br /&gt;
# [http://downloads.canaan-creative.com/software/avalon_nano2/app/Avalon_miner_latest.crx Install from local crx]&lt;br /&gt;
&lt;br /&gt;
==== CGMiner Under Ubuntu 14.04 ====&lt;br /&gt;
* Download / Compile / Run&lt;br /&gt;
 &#039;&#039;&#039;Download&#039;&#039;&#039;&lt;br /&gt;
 Inside your home directory, download CGMiner&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Compile&#039;&#039;&#039;&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon-miner&lt;br /&gt;
 make -j 4&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Run&#039;&#039;&#039;&lt;br /&gt;
 sudo ./cgminer -o http://stratum.pool:3333 -u work -p pass&lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer -o http://stratum.pool:3333 -u work -p pass --api-allow W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== [https://en.bitcoin.it/wiki/Avalon_nano#Hardware Hardware] ===&lt;br /&gt;
=== Firmware ===&lt;br /&gt;
==== Release ====&lt;br /&gt;
[http://build.canaan-creative.com:8080/~mikeqin/avalonnano2/ Daily Building]&lt;br /&gt;
&lt;br /&gt;
[http://downloads.canaan-creative.com/software/avalon_nano2/firmware/2015-08-25/ 2015-08-25]&lt;br /&gt;
* Avalon nano 2.0 firmware (3U1505-4481b7e0): first version&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://docs.lpcware.com/usbromlib/v1.0/ USBD ROM Stack]&lt;br /&gt;
* [http://www.nxp.com/documents/user_manual/UM10462.pdf LPC11U1X User Manual]&lt;br /&gt;
* [http://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc11xx-packages-0 LPCOpen sourcecode]&lt;br /&gt;
* [http://docs.lpcware.com/lpcopen/v1.03/ LPCOpen docs]&lt;br /&gt;
* [http://www.lpcware.com/system/files/LPCXpressoLPC11U14revA_0.pdf LPC11U14 Rev A Schematic]&lt;br /&gt;
* [http://www.nxp.com/documents/errata_sheet/ES_LPC11U1X.pdf Errata sheet LPC11U1x]&lt;br /&gt;
* [http://support.code-red-tech.com/CodeRedWiki/UsingGDB?highlight=%28LPC\-Link%29 Using command line GDB]&lt;br /&gt;
* Baremetal programming&lt;br /&gt;
** http://eleceng.dit.ie/frank/arm/BareMetalLPC1114/index.html&lt;br /&gt;
** http://eewiki.net/display/microcontroller/Getting+Started+with+NXP%27s+LPC11XX+Cortex-M0+ARM+Microcontrollers&lt;br /&gt;
** http://tech.munts.com/MCU/Frameworks/RaspberryPi/expansion/LPC1114/&lt;br /&gt;
* ULINK2&lt;br /&gt;
** [http://www.keil.com/support/docs/3632.htm ULINK: How to downgrade the firmware of ULINK2/ME]&lt;br /&gt;
** [http://www.keil.com/support/man/docs/ulink2/ulink2_fw_upgrade.htm Firmware Upgrade Utility]&lt;br /&gt;
** [http://www.keil.com/support/man/docs/ulink2/ulink2_trblsh_hwcheck.htm Hardware Checklist]&lt;br /&gt;
** [http://www.keil.com/support/man/docs/uv4/uv4_cl_programflash.htm Program Flash Example]&lt;br /&gt;
* LPC-Link&lt;br /&gt;
** [http://www.support.code-red-tech.com/CodeRedWiki/BootingLPCLink?highlight=%28dfu%5C-util%29 Booting LPC-Link]&lt;br /&gt;
** [http://www.support.code-red-tech.com/CodeRedWiki/LPCLinkDiagnostics?highlight=%28dfu%5C-util%29 Diagnostics when connecting to LPC-Link]&lt;br /&gt;
* [http://www.keil.com/support/man/docs/dapdebug/dapdebug_introduction.htm About CMSIS-DAP]&lt;br /&gt;
* [http://www.lpcware.com/content/nxpfile/an11321-porting-cmsis-dap-debugger-cortex-m0-platform Porting the CMSIS-DAP debugger to the Cortex-M0 platform]&lt;br /&gt;
* [http://microcontrollershop.com/product_info.php?products_id=4838 LPC11U14 ARM Cortex-M0 Board]&lt;br /&gt;
* [http://www.lpcware.com/content/blog/application-programming-iap-code-example In-Application Programming (IAP) Code Example]&lt;br /&gt;
* Software for flashing / upgrading firmware&lt;br /&gt;
** [http://www.lpcware.com/lpcxpresso/download LPCXpresso] (SWD method)&lt;br /&gt;
* [http://www.keil.com/support/man/docs/ulink2/ulink2_hw_connectors.htm Target Connectors]&lt;br /&gt;
* [https://www.lpcware.com/content/faq/lpcxpresso/regaining-debug-access Regaining debug access to target MCU]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=61146</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=61146"/>
		<updated>2016-06-01T02:30:31Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* MM Firmware  20160511 released*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
  Hashrate: 3.5Ths ± 5%&lt;br /&gt;
  Power Consumption: ≈ 1050 Watt (with assumption of 90% power conversion ratio)&lt;br /&gt;
  Overclocking: Support automatically optimizes frequency, no need to overclock manually.&lt;br /&gt;
  PSU ouput pin: 4 x 6PIN PCIe power connector.&lt;br /&gt;
  Controller: Raspberry Pi (version B or B+) Raspberry Pi 2 is not supported yet.&lt;br /&gt;
  AUC: Each AUC can connect up to 6 devices.&lt;br /&gt;
  Dimensions: 340 mm x 136 mm x 150 mm&lt;br /&gt;
  Operating Temperature: -10 °C to 38°C&lt;br /&gt;
  Fan Specs: 12038, Current less then 2.4A&lt;br /&gt;
  Protection Degree: IP20&lt;br /&gt;
  Net weight: 4.8kg&lt;br /&gt;
  Gross weight: 5kg&lt;br /&gt;
&lt;br /&gt;
== Pictures ==&lt;br /&gt;
=== Control board ===&lt;br /&gt;
[[File: AvalonMiner6_CTRL.png | none | 640 px]]&lt;br /&gt;
* NC means not connect&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
=== Avalon6 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUC2 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IIC ==&lt;br /&gt;
[[File:IIC_Link_Avalon6.png]]&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 65536&lt;br /&gt;
| CODE_LOCK&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run without decrypt&lt;br /&gt;
| Ask service for help&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 131072&lt;br /&gt;
| CODE_HOTBEFORE&lt;br /&gt;
| WARN&lt;br /&gt;
| Toohot is found on MM&lt;br /&gt;
| It&#039;s just a note on toohot&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 262144&lt;br /&gt;
| CODE_APIFIFOOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| API fifo overflow flag&lt;br /&gt;
| It&#039;s just a note on api fifo&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20160530/ 20160530] ===&lt;br /&gt;
* CGMiner:Add more options to optimize hashrate when toohot occus.&lt;br /&gt;
* CGMiner:Support AV4 miner detect through iic&lt;br /&gt;
* CGMiner:Double check data size when use avalon4_auc_xfer&lt;br /&gt;
* CGMiner:Update adjust_fan to avoid fan overshoot, Thanks to ckolivas&lt;br /&gt;
* CGMiner:Update default target temperature for AvalonMiner 6.(68℃ to 65℃)&lt;br /&gt;
* CGMiner:Support 6 machines maximum on a AUC&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20160125/ 20160125] ===&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option (mode 3), and change it to default.&lt;br /&gt;
* Update mm count when scan hash&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* Notice: Only for testing purpose&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2016-05-11/ 2016-05-11] ===&lt;br /&gt;
* Version: &#039;&#039;&#039;601605-256e0f00&#039;&#039;&#039;&lt;br /&gt;
* Check api fifo overflow&lt;br /&gt;
* Add CODE_HOTBEFORE for hot notify&lt;br /&gt;
* Add a new package AVA4_P_SET_FREQ&lt;br /&gt;
* Support device hardware error&lt;br /&gt;
* Fix duplicate share&lt;br /&gt;
* Move stratum file to a lib&lt;br /&gt;
* Update temp check&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2016-01-25/ 2016-01-25] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601601-5d8a1270&#039;&#039;&#039;&lt;br /&gt;
* Add mm package header verify&lt;br /&gt;
* Update pll couter for separate module&lt;br /&gt;
* Update iic address free mechanism&lt;br /&gt;
* Update fan rpm detect&lt;br /&gt;
* Fix duplicate address during detect&lt;br /&gt;
* Fix freq setting lost cause by mm was toot&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* Notice: Only for testing purpose&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
* Download &amp;amp; Compile&lt;br /&gt;
# git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
# cd cgminer&lt;br /&gt;
# git checkout origin/avalon4 -b avalon4&lt;br /&gt;
# ./autogen.sh --enable-avalon4&lt;br /&gt;
# make -j 4&lt;br /&gt;
&lt;br /&gt;
* Run&lt;br /&gt;
# Run with AUC&lt;br /&gt;
#;sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
#;or&lt;br /&gt;
#;sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
#;&lt;br /&gt;
# Run with AUC and IIC interface&lt;br /&gt;
#;sudo ./cgminer --avalon4-iic-detect --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
#;or&lt;br /&gt;
#;sudo ./cgminer --avalon4-iic-detect --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./logA&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
==== Support USB-DFU Mode ====&lt;br /&gt;
 We can use dfu-util under Ubuntu 14.04 or later updata new firmware for AUC2.&lt;br /&gt;
&lt;br /&gt;
==== Using USB-DFU Protocol ====&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Device Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
!Offset!!Field!!Size!!Value!!Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 12h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 01h || DEVICE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bcdUSB || 2 || 0100h || USB specification release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bDeviceClass || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bDeviceSubClass || 1 || 00h || See interface&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bDeviceProtocol || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bMaxPacketSize0 || 1 || 8,16,32,64 || Maximum packet size for endpoint.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || idVendor || 2 || ID || Vendor ID. Assigned by the USB-IF.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || idProduct || 2 || ID || Product ID. Assigned by manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || bcdDevice || 2 || BCD || Device release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 14 || iManufacturer || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 15 || iProduct || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || iSerialNumber || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || bNumConfigurations || 1 || 01h || One configuration only for DFU. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 01h || Runtime protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Functional Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 21h || DFU FUNCTIONAL descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bmAttributes || 1 || Bit mask || DFU attributes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 7……4: reserved&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 3: device will perform a bus detach-attach sequence when it receives a DFU_DETACH request. The host must not issue a USB Reset. (bitWillDetach)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 2: device is able to communicate via USB afeter Manifestation phase.(bitManifestationTolerant)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no, must see bus reset&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit1: upload capable(bitCanUpload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit0: download capable(bitCanDnload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || wDetachTimeOut || 2 || Number || Time,in milliseconds, that the device will wait after receipt of the DFU_DETACH request. if this time elapses without a USB reaset, then the device will terminate the Reconfiguration phase and revert back to normal operation . This repreents the maximum time that the device can wait(depending on its timers, etc.).The host may specify a shorter timeout in the DFU_DETACH request.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || wTransferSize || 2 || Number || Maximum number of bytes that the device can accept per control-write transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bcdDFUVersion || 2 || BCD || Numeric expression identifying the version of the DFU Specification release.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Mode Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 02h || DFU mode protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== USB-DFU Product&#039;s USB Descriptor ====&lt;br /&gt;
[[File:USB-DFU Descriptor.png]]&lt;br /&gt;
&lt;br /&gt;
==== DFU Updata Process Diagram ====&lt;br /&gt;
[[File:UpdataProcess.png]]&lt;br /&gt;
&lt;br /&gt;
==== Judge Updating Program Or Application Program ====&lt;br /&gt;
 I used a updata flag which is a four bytes word and is writed at fixd flash address (0x8000 - 4)&lt;br /&gt;
&lt;br /&gt;
 The flag&#039;s value is 0xAABBCCDD&lt;br /&gt;
&lt;br /&gt;
 When the bootloader program run, first it judge the updata flag, if the updata falg is not equal 0xAABBCCDD, it will jump to application program.&lt;br /&gt;
 Otherwise it will run to updata program.&lt;br /&gt;
&lt;br /&gt;
==== Jump To Application Program ====&lt;br /&gt;
 When we don&#039;t want to updata application program, the bootloader program should run to application program.&lt;br /&gt;
&lt;br /&gt;
 In order to achieve this goal, we can add under code in your bootloader program.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4000&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4000 is my application program&#039;s MSP point, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov sp, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4004&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4004 is my application program reset-function entry address, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov pc, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modify dfu-util For Ubuntu 14.04 ====&lt;br /&gt;
 #Inside your home directory, download dfu-util&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.openezx.org/dfu-util.git&lt;br /&gt;
&lt;br /&gt;
 open dfu-util/src/dfu_load.c&lt;br /&gt;
&lt;br /&gt;
 add this instruction &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&lt;br /&gt;
&lt;br /&gt;
 cd dfu-util&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
 The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
&lt;br /&gt;
=== Add DFU In AUC2 Firmware ===&lt;br /&gt;
==== Modify The AUC2 Firmware Flash And RAM Address ====&lt;br /&gt;
 1. We modify the Flash start address at 0x4000, because the bootloader&#039;s size is 0x4000.&amp;lt;br /&amp;gt;&lt;br /&gt;
 2. We modify the RAM start address at 0x10000200, because we remap the NVIC table at the RAM 0x10000000,&lt;br /&gt;
    and the NVIC table size is 0x200 bytes.&amp;lt;br /&amp;gt;&lt;br /&gt;
 3. We modify the *.ld file. And my *.ld file is avalon-usb-converter.ld, you can find your *.ld file.&lt;br /&gt;
:{|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;big&amp;gt;Before Modification&amp;lt;/big&amp;gt;&lt;br /&gt;
! &amp;lt;big&amp;gt;After  Modification&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|MEMORY&lt;br /&gt;
{&lt;br /&gt;
    /* Define each memory region */&lt;br /&gt;
&lt;br /&gt;
    MFlash32 (rx) : ORIGIN = 0x0, LENGTH = 0x8000 	/* 32K bytes */&lt;br /&gt;
    RamLoc4 (rwx) : ORIGIN = 0x10000000, LENGTH = 0x1000 /* 4K bytes */&lt;br /&gt;
    RamUsb2 (rwx) : ORIGIN = 0x20004000, LENGTH = 0x800 /* 2K bytes */&lt;br /&gt;
}&lt;br /&gt;
    /* Define a symbol for the top of each memory region */&lt;br /&gt;
&lt;br /&gt;
    __top_MFlash32 = 0x0 + 0x8000;&lt;br /&gt;
    __top_RamLoc4 = 0x1000000 + 0x1000;&lt;br /&gt;
    __top_RamUsb2 = 0x20004000 + 0x800;&lt;br /&gt;
|MEMORY&lt;br /&gt;
{&lt;br /&gt;
    /* Define each memory region */&lt;br /&gt;
&lt;br /&gt;
    MFlash32 (rx) : ORIGIN = 0x4000, LENGTH = 0x4000 	/* 16K bytes */&lt;br /&gt;
    RamLoc4 (rwx) : ORIGIN = 0x10000200, LENGTH = 0xe00 /* 3.5K bytes */&lt;br /&gt;
    RamUsb2 (rwx) : ORIGIN = 0x20004000, LENGTH = 0x800 /* 2K bytes */&lt;br /&gt;
}&lt;br /&gt;
    /* Define a symbol for the top of each memory region */&lt;br /&gt;
&lt;br /&gt;
    __top_MFlash32 = 0x4000 + 0x4000;&lt;br /&gt;
    __top_RamLoc4 = 0x10000200 + 0xe00;&lt;br /&gt;
    __top_RamUsb2 = 0x20004000 + 0x800;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Remap The NVIC Table ====&lt;br /&gt;
 1. Add Under Function Code In Your Program.&lt;br /&gt;
&lt;br /&gt;
    /* copy the nvic table to ram */&lt;br /&gt;
    static void copy_nvic_to_ram(void)&lt;br /&gt;
    {&lt;br /&gt;
        volatile uint32_t *dst, size;&lt;br /&gt;
        volatile const uint32_t *src;&amp;lt;br /&amp;gt;&lt;br /&gt;
        src = (volatile uint32_t *)APP_START_ADDR;//APP_START_ADDR Is The Application Program&#039;s Start Address. &lt;br /&gt;
        dst = (volatile uint32_t *)RAM_START_ADDR;//RAM_START_ADDR Is The RAM Start Address.&lt;br /&gt;
        size = NVIC_TABLE_LEN &amp;gt;&amp;gt; 2;//NVIC_TABLE_LEN Is The NVIC Table&#039;s Size.&lt;br /&gt;
        do {&lt;br /&gt;
            *dst++ = *src++;&lt;br /&gt;
        } while (--size);&amp;lt;br /&amp;gt;&lt;br /&gt;
        /* NVIC remap to RAM */&lt;br /&gt;
        Chip_SYSCTL_Map(0x01);&amp;lt;br /&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
 2. Config The Register To Remap NVIC Table To RAM&lt;br /&gt;
:[[File:LPC11u14 NVIC Table Remap1.png | none | 640px ]]&lt;br /&gt;
 &amp;lt;big&amp;gt;&amp;lt;big&amp;gt;More See UM10462 LPC11U3x/2x/1x User manual,At The Page 22.&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Issues ===&lt;br /&gt;
&amp;lt;big&amp;gt;1. About Bootloader USB Descriptor:&amp;lt;/big&amp;gt;&lt;br /&gt;
 Note the DFU Functional Descriptor&#039; wTransferSize size, It must equal the USBD_DFU_INIT_PARAM_T&#039;s wTransferSize.&lt;br /&gt;
&amp;lt;big&amp;gt;2. About IAP Transmission Data Size &amp;lt;/big&amp;gt;&lt;br /&gt;
 The data size should be 256 or 512 or 1024 or 4096 Bytes.&lt;br /&gt;
&amp;lt;big&amp;gt;3. About IAP Transmission Data Address &amp;lt;/big&amp;gt;&lt;br /&gt;
 The data address should be a 256 byte boundary.&lt;br /&gt;
&amp;lt;big&amp;gt;3. Why sometimes updata failed ?&amp;lt;/big&amp;gt;&lt;br /&gt;
 Now, I didn&#039;t find the real reason. But, I think the reason is the time of communication is not correct. &lt;br /&gt;
&amp;lt;big&amp;gt;3. Why sometimes updata finished, but the program don&#039;t run normally ?&amp;lt;/big&amp;gt;&lt;br /&gt;
 I think that I didn&#039;t check the flash address and the data address are right.&amp;lt;br /&amp;gt;&lt;br /&gt;
 I will add the check in the program later.&lt;br /&gt;
&lt;br /&gt;
=== References And Links ===&lt;br /&gt;
* [https://www.lpcware.com/lpcxpresso/download LPCXpress IDE Download]&lt;br /&gt;
* [http://www.usb.org/developers/docs/devclass_docs/DFU_1.1.pdf See More About DFU Protocol]&lt;br /&gt;
* [https://github.com/Canaan-Creative/Avalon-USB-converter Source Code]&lt;br /&gt;
* [http://docs.lpcware.com/usbromlib/v1.0/ USBD ROM Stack]&lt;br /&gt;
* [http://www.nxp.com/documents/user_manual/UM10462.pdf LPC11U1X User Manual]&lt;br /&gt;
* [http://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc11xx-packages-0 LPCOpen sourcecode]&lt;br /&gt;
* [http://docs.lpcware.com/lpcopen/v1.03/ LPCOpen docs]&lt;br /&gt;
* [http://www.lpcware.com/system/files/LPCXpressoLPC11U14revA_0.pdf LPC11U14 Rev A Schematic]&lt;br /&gt;
* [http://www.nxp.com/documents/errata_sheet/ES_LPC11U1X.pdf Errata sheet LPC11U1x]&lt;br /&gt;
* [http://support.code-red-tech.com/CodeRedWiki/UsingGDB?highlight=%28LPC\-Link%29 Using command line GDB]&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
# Upgrade OpenWrt branch to master&lt;br /&gt;
# Commit cgminer package for OpenWrt packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;br /&gt;
3. AUC always appear and then disappear in CGMiner status ?&lt;br /&gt;
  It maybe damaged. Take a new one instead.&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=60721</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=60721"/>
		<updated>2016-04-06T08:35:01Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* Basic Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
  Hashrate: 3.5Ths ± 5%&lt;br /&gt;
  Power Consumption: ≈ 1050 Watt (with assumption of 90% power conversion ratio)&lt;br /&gt;
  Overclocking: Support automatically optimizes frequency, no need to overclock manually.&lt;br /&gt;
  PSU ouput pin: 4 x 6PIN PCIe power connector.&lt;br /&gt;
  Controller: Raspberry Pi (version B or B+) Raspberry Pi 2 is not supported yet.&lt;br /&gt;
  AUC: Each AUC can connect up to 6 devices.&lt;br /&gt;
  Dimensions: 340 mm x 136 mm x 150 mm&lt;br /&gt;
  Operating Temperature: -10 °C to 38°C&lt;br /&gt;
  Fan Specs: 12038, Current less then 2.4A&lt;br /&gt;
  Protection Degree: IP20&lt;br /&gt;
  Net weight: 4.8kg&lt;br /&gt;
  Gross weight: 5kg&lt;br /&gt;
&lt;br /&gt;
== Pictures ==&lt;br /&gt;
=== Control board ===&lt;br /&gt;
[[File: AvalonMiner6_CTRL.png | none | 640 px]]&lt;br /&gt;
* NC means not connect&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
=== Avalon6 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUC2 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IIC ==&lt;br /&gt;
[[File:IIC_Link_Avalon6.png]]&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20160125/ 20160125] ===&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option (mode 3), and change it to default.&lt;br /&gt;
* Update mm count when scan hash&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2016-01-25/ 2016-01-25] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601601-5d8a1270&#039;&#039;&#039;&lt;br /&gt;
* Add mm package header verify&lt;br /&gt;
* Update pll couter for separate module&lt;br /&gt;
* Update iic address free mechanism&lt;br /&gt;
* Update fan rpm detect&lt;br /&gt;
* Fix duplicate address during detect&lt;br /&gt;
* Fix freq setting lost cause by mm was toot&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
==== Support USB-DFU Mode ====&lt;br /&gt;
 We can use dfu-util under Ubuntu 14.04 or later updata new firmware for AUC2.&lt;br /&gt;
&lt;br /&gt;
==== Using USB-DFU Protocol ====&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Device Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
!Offset!!Field!!Size!!Value!!Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 12h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 01h || DEVICE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bcdUSB || 2 || 0100h || USB specification release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bDeviceClass || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bDeviceSubClass || 1 || 00h || See interface&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bDeviceProtocol || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bMaxPacketSize0 || 1 || 8,16,32,64 || Maximum packet size for endpoint.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || idVendor || 2 || ID || Vendor ID. Assigned by the USB-IF.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || idProduct || 2 || ID || Product ID. Assigned by manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || bcdDevice || 2 || BCD || Device release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 14 || iManufacturer || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 15 || iProduct || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || iSerialNumber || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || bNumConfigurations || 1 || 01h || One configuration only for DFU. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 01h || Runtime protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Functional Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 21h || DFU FUNCTIONAL descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bmAttributes || 1 || Bit mask || DFU attributes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 7……4: reserved&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 3: device will perform a bus detach-attach sequence when it receives a DFU_DETACH request. The host must not issue a USB Reset. (bitWillDetach)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 2: device is able to communicate via USB afeter Manifestation phase.(bitManifestationTolerant)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no, must see bus reset&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit1: upload capable(bitCanUpload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit0: download capable(bitCanDnload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || wDetachTimeOut || 2 || Number || Time,in milliseconds, that the device will wait after receipt of the DFU_DETACH request. if this time elapses without a USB reaset, then the device will terminate the Reconfiguration phase and revert back to normal operation . This repreents the maximum time that the device can wait(depending on its timers, etc.).The host may specify a shorter timeout in the DFU_DETACH request.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || wTransferSize || 2 || Number || Maximum number of bytes that the device can accept per control-write transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bcdDFUVersion || 2 || BCD || Numeric expression identifying the version of the DFU Specification release.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Mode Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 02h || DFU mode protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== USB-DFU Product&#039;s USB Descriptor ====&lt;br /&gt;
[[File:USB-DFU Descriptor.png]]&lt;br /&gt;
&lt;br /&gt;
==== DFU Updata Process Diagram ====&lt;br /&gt;
[[File:UpdataProcess.png]]&lt;br /&gt;
&lt;br /&gt;
==== Judge Updating Program Or Application Program ====&lt;br /&gt;
 I used a updata flag which is a four bytes word and is writed at fixd flash address (0x8000 - 4)&lt;br /&gt;
&lt;br /&gt;
 The flag&#039;s value is 0xAABBCCDD&lt;br /&gt;
&lt;br /&gt;
 When the bootloader program run, first it judge the updata flag, if the updata falg is not equal 0xAABBCCDD, it will jump to application program.&lt;br /&gt;
 Otherwise it will run to updata program.&lt;br /&gt;
&lt;br /&gt;
==== Jump To Application Program ====&lt;br /&gt;
 When we don&#039;t want to updata application program, the bootloader program should run to application program.&lt;br /&gt;
&lt;br /&gt;
 In order to achieve this goal, we can add under code in your bootloader program.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4000&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4000 is my application program&#039;s MSP point, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov sp, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4004&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4004 is my application program reset-function entry address, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov pc, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modify dfu-util For Ubuntu 14.04 ====&lt;br /&gt;
 #Inside your home directory, download dfu-util&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.openezx.org/dfu-util.git&lt;br /&gt;
&lt;br /&gt;
 open dfu-util/src/dfu_load.c&lt;br /&gt;
&lt;br /&gt;
 add this instruction &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&lt;br /&gt;
&lt;br /&gt;
 cd dfu-util&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
 The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
&lt;br /&gt;
=== Add DFU In AUC2 Firmware ===&lt;br /&gt;
==== Modify The AUC2 Firmware Flash And RAM Address ====&lt;br /&gt;
 1. We modify the Flash start address at 0x4000, because the bootloader&#039;s size is 0x4000.&amp;lt;br /&amp;gt;&lt;br /&gt;
 2. We modify the RAM start address at 0x10000200, because we remap the NVIC table at the RAM 0x10000000,&lt;br /&gt;
    and the NVIC table size is 0x200 bytes.&amp;lt;br /&amp;gt;&lt;br /&gt;
 3. We modify the *.ld file. And my *.ld file is avalon-usb-converter.ld, you can find your *.ld file.&lt;br /&gt;
:{|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;big&amp;gt;Before Modification&amp;lt;/big&amp;gt;&lt;br /&gt;
! &amp;lt;big&amp;gt;After  Modification&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|MEMORY&lt;br /&gt;
{&lt;br /&gt;
    /* Define each memory region */&lt;br /&gt;
&lt;br /&gt;
    MFlash32 (rx) : ORIGIN = 0x0, LENGTH = 0x8000 	/* 32K bytes */&lt;br /&gt;
    RamLoc4 (rwx) : ORIGIN = 0x10000000, LENGTH = 0x1000 /* 4K bytes */&lt;br /&gt;
    RamUsb2 (rwx) : ORIGIN = 0x20004000, LENGTH = 0x800 /* 2K bytes */&lt;br /&gt;
}&lt;br /&gt;
    /* Define a symbol for the top of each memory region */&lt;br /&gt;
&lt;br /&gt;
    __top_MFlash32 = 0x0 + 0x8000;&lt;br /&gt;
    __top_RamLoc4 = 0x1000000 + 0x1000;&lt;br /&gt;
    __top_RamUsb2 = 0x20004000 + 0x800;&lt;br /&gt;
|MEMORY&lt;br /&gt;
{&lt;br /&gt;
    /* Define each memory region */&lt;br /&gt;
&lt;br /&gt;
    MFlash32 (rx) : ORIGIN = 0x4000, LENGTH = 0x4000 	/* 16K bytes */&lt;br /&gt;
    RamLoc4 (rwx) : ORIGIN = 0x10000200, LENGTH = 0xe00 /* 3.5K bytes */&lt;br /&gt;
    RamUsb2 (rwx) : ORIGIN = 0x20004000, LENGTH = 0x800 /* 2K bytes */&lt;br /&gt;
}&lt;br /&gt;
    /* Define a symbol for the top of each memory region */&lt;br /&gt;
&lt;br /&gt;
    __top_MFlash32 = 0x4000 + 0x4000;&lt;br /&gt;
    __top_RamLoc4 = 0x10000200 + 0xe00;&lt;br /&gt;
    __top_RamUsb2 = 0x20004000 + 0x800;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Remap The NVIC Table ====&lt;br /&gt;
 1. Add Under Function Code In Your Program.&lt;br /&gt;
&lt;br /&gt;
    /* copy the nvic table to ram */&lt;br /&gt;
    static void copy_nvic_to_ram(void)&lt;br /&gt;
    {&lt;br /&gt;
        volatile uint32_t *dst, size;&lt;br /&gt;
        volatile const uint32_t *src;&amp;lt;br /&amp;gt;&lt;br /&gt;
        src = (volatile uint32_t *)APP_START_ADDR;//APP_START_ADDR Is The Application Program&#039;s Start Address. &lt;br /&gt;
        dst = (volatile uint32_t *)RAM_START_ADDR;//RAM_START_ADDR Is The RAM Start Address.&lt;br /&gt;
        size = NVIC_TABLE_LEN &amp;gt;&amp;gt; 2;//NVIC_TABLE_LEN Is The NVIC Table&#039;s Size.&lt;br /&gt;
        do {&lt;br /&gt;
            *dst++ = *src++;&lt;br /&gt;
        } while (--size);&amp;lt;br /&amp;gt;&lt;br /&gt;
        /* NVIC remap to RAM */&lt;br /&gt;
        Chip_SYSCTL_Map(0x01);&amp;lt;br /&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
 2. Config The Register To Remap NVIC Table To RAM&lt;br /&gt;
:[[File:LPC11u14 NVIC Table Remap1.png | none | 640px ]]&lt;br /&gt;
 &amp;lt;big&amp;gt;&amp;lt;big&amp;gt;More See UM10462 LPC11U3x/2x/1x User manual,At The Page 22.&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Issues ===&lt;br /&gt;
&amp;lt;big&amp;gt;1. About Bootloader USB Descriptor:&amp;lt;/big&amp;gt;&lt;br /&gt;
 Note the DFU Functional Descriptor&#039; wTransferSize size, It must equal the USBD_DFU_INIT_PARAM_T&#039;s wTransferSize.&lt;br /&gt;
&amp;lt;big&amp;gt;2. About IAP Transmission Data Size &amp;lt;/big&amp;gt;&lt;br /&gt;
 The data size should be 256 or 512 or 1024 or 4096 Bytes.&lt;br /&gt;
&amp;lt;big&amp;gt;3. About IAP Transmission Data Address &amp;lt;/big&amp;gt;&lt;br /&gt;
 The data address should be a 256 byte boundary.&lt;br /&gt;
&amp;lt;big&amp;gt;3. Why sometimes updata failed ?&amp;lt;/big&amp;gt;&lt;br /&gt;
 Now, I didn&#039;t find the real reason. But, I think the reason is the time of communication is not correct. &lt;br /&gt;
&amp;lt;big&amp;gt;3. Why sometimes updata finished, but the program don&#039;t run normally ?&amp;lt;/big&amp;gt;&lt;br /&gt;
 I think that I didn&#039;t check the flash address and the data address are right.&amp;lt;br /&amp;gt;&lt;br /&gt;
 I will add the check in the program later.&lt;br /&gt;
&lt;br /&gt;
=== References And Links ===&lt;br /&gt;
* [https://www.lpcware.com/lpcxpresso/download LPCXpress IDE Download]&lt;br /&gt;
* [http://www.usb.org/developers/docs/devclass_docs/DFU_1.1.pdf See More About DFU Protocol]&lt;br /&gt;
* [https://github.com/Canaan-Creative/Avalon-USB-converter Source Code]&lt;br /&gt;
* [http://docs.lpcware.com/usbromlib/v1.0/ USBD ROM Stack]&lt;br /&gt;
* [http://www.nxp.com/documents/user_manual/UM10462.pdf LPC11U1X User Manual]&lt;br /&gt;
* [http://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc11xx-packages-0 LPCOpen sourcecode]&lt;br /&gt;
* [http://docs.lpcware.com/lpcopen/v1.03/ LPCOpen docs]&lt;br /&gt;
* [http://www.lpcware.com/system/files/LPCXpressoLPC11U14revA_0.pdf LPC11U14 Rev A Schematic]&lt;br /&gt;
* [http://www.nxp.com/documents/errata_sheet/ES_LPC11U1X.pdf Errata sheet LPC11U1x]&lt;br /&gt;
* [http://support.code-red-tech.com/CodeRedWiki/UsingGDB?highlight=%28LPC\-Link%29 Using command line GDB]&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
# Commit cgminer package for OpenWrt packages&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Support a new SmartSpeed way&lt;br /&gt;
# Update local hash rate calculate method&lt;br /&gt;
# Fix duplicate mm address&lt;br /&gt;
# Support 5 or 6 mm running stably&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
# Fix duplicate mm address&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address&lt;br /&gt;
# AUC may be disappeared by unknown reason, then it can be detected again.&lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=File:IIC_Link_Avalon6.png&amp;diff=60720</id>
		<title>File:IIC Link Avalon6.png</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=File:IIC_Link_Avalon6.png&amp;diff=60720"/>
		<updated>2016-04-06T08:31:59Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=File:IIC_Link_Avalon4.png&amp;diff=60719</id>
		<title>File:IIC Link Avalon4.png</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=File:IIC_Link_Avalon4.png&amp;diff=60719"/>
		<updated>2016-04-06T08:24:37Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: Johnson-Fan uploaded a new version of File:IIC Link Avalon4.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=File:IIC_Link_Avalon4.png&amp;diff=60718</id>
		<title>File:IIC Link Avalon4.png</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=File:IIC_Link_Avalon4.png&amp;diff=60718"/>
		<updated>2016-04-06T08:22:23Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: Johnson-Fan uploaded a new version of File:IIC Link Avalon4.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59902</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59902"/>
		<updated>2016-01-08T10:11:04Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* Add DFU In AUC2 Firmware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
=== Avalon6 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUC2 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
==== Support USB-DFU Mode ====&lt;br /&gt;
 We can use dfu-util under Ubuntu 14.04 or later updata new firmware for AUC2.&lt;br /&gt;
&lt;br /&gt;
==== Using USB-DFU Protocol ====&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Device Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
!Offset!!Field!!Size!!Value!!Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 12h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 01h || DEVICE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bcdUSB || 2 || 0100h || USB specification release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bDeviceClass || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bDeviceSubClass || 1 || 00h || See interface&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bDeviceProtocol || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bMaxPacketSize0 || 1 || 8,16,32,64 || Maximum packet size for endpoint.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || idVendor || 2 || ID || Vendor ID. Assigned by the USB-IF.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || idProduct || 2 || ID || Product ID. Assigned by manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || bcdDevice || 2 || BCD || Device release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 14 || iManufacturer || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 15 || iProduct || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || iSerialNumber || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || bNumConfigurations || 1 || 01h || One configuration only for DFU. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 01h || Runtime protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Functional Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 21h || DFU FUNCTIONAL descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bmAttributes || 1 || Bit mask || DFU attributes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 7……4: reserved&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 3: device will perform a bus detach-attach sequence when it receives a DFU_DETACH request. The host must not issue a USB Reset. (bitWillDetach)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 2: device is able to communicate via USB afeter Manifestation phase.(bitManifestationTolerant)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no, must see bus reset&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit1: upload capable(bitCanUpload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit0: download capable(bitCanDnload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || wDetachTimeOut || 2 || Number || Time,in milliseconds, that the device will wait after receipt of the DFU_DETACH request. if this time elapses without a USB reaset, then the device will terminate the Reconfiguration phase and revert back to normal operation . This repreents the maximum time that the device can wait(depending on its timers, etc.).The host may specify a shorter timeout in the DFU_DETACH request.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || wTransferSize || 2 || Number || Maximum number of bytes that the device can accept per control-write transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bcdDFUVersion || 2 || BCD || Numeric expression identifying the version of the DFU Specification release.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Mode Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 02h || DFU mode protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== USB-DFU Product&#039;s USB Descriptor ====&lt;br /&gt;
[[File:USB-DFU Descriptor.png]]&lt;br /&gt;
&lt;br /&gt;
==== DFU Updata Process Diagram ====&lt;br /&gt;
[[File:UpdataProcess.png]]&lt;br /&gt;
&lt;br /&gt;
==== Judge Updating Program Or Application Program ====&lt;br /&gt;
 I used a updata flag which is a four bytes word and is writed at fixd flash address (0x8000 - 4)&lt;br /&gt;
&lt;br /&gt;
 The flag&#039;s value is 0xAABBCCDD&lt;br /&gt;
&lt;br /&gt;
 When the bootloader program run, first it judge the updata flag, if the updata falg is not equal 0xAABBCCDD, it will jump to application program.&lt;br /&gt;
 Otherwise it will run to updata program.&lt;br /&gt;
&lt;br /&gt;
==== Jump To Application Program ====&lt;br /&gt;
 When we don&#039;t want to updata application program, the bootloader program should run to application program.&lt;br /&gt;
&lt;br /&gt;
 In order to achieve this goal, we can add under code in your bootloader program.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4000&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4000 is my application program&#039;s MSP point, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov sp, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4004&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4004 is my application program reset-function entry address, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov pc, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modify dfu-util For Ubuntu 14.04 ====&lt;br /&gt;
 #Inside your home directory, download dfu-util&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.openezx.org/dfu-util.git&lt;br /&gt;
&lt;br /&gt;
 open dfu-util/src/dfu_load.c&lt;br /&gt;
&lt;br /&gt;
 add this instruction &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&lt;br /&gt;
&lt;br /&gt;
 cd dfu-util&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
 The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
&lt;br /&gt;
=== Add DFU In AUC2 Firmware ===&lt;br /&gt;
==== Modify The AUC2 Firmware Flash And RAM Address ====&lt;br /&gt;
 1. We modify the Flash start address at 0x4000, because the bootloader&#039;s size is 0x4000.&amp;lt;br /&amp;gt;&lt;br /&gt;
 2. We modify the RAM start address at 0x10000200, because we remap the NVIC table at the RAM 0x10000000,&lt;br /&gt;
    and the NVIC table size is 0x200 bytes.&amp;lt;br /&amp;gt;&lt;br /&gt;
 3. We modify the *.ld file. And my *.ld file is avalon-usb-converter.ld, you can find your *.ld file.&lt;br /&gt;
:{|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;big&amp;gt;Before Modification&amp;lt;/big&amp;gt;&lt;br /&gt;
! &amp;lt;big&amp;gt;After  Modification&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|MEMORY&lt;br /&gt;
{&lt;br /&gt;
    /* Define each memory region */&lt;br /&gt;
&lt;br /&gt;
    MFlash32 (rx) : ORIGIN = 0x0, LENGTH = 0x8000 	/* 32K bytes */&lt;br /&gt;
    RamLoc4 (rwx) : ORIGIN = 0x10000000, LENGTH = 0x1000 /* 4K bytes */&lt;br /&gt;
    RamUsb2 (rwx) : ORIGIN = 0x20004000, LENGTH = 0x800 /* 2K bytes */&lt;br /&gt;
}&lt;br /&gt;
    /* Define a symbol for the top of each memory region */&lt;br /&gt;
&lt;br /&gt;
    __top_MFlash32 = 0x0 + 0x8000;&lt;br /&gt;
    __top_RamLoc4 = 0x1000000 + 0x1000;&lt;br /&gt;
    __top_RamUsb2 = 0x20004000 + 0x800;&lt;br /&gt;
|MEMORY&lt;br /&gt;
{&lt;br /&gt;
    /* Define each memory region */&lt;br /&gt;
&lt;br /&gt;
    MFlash32 (rx) : ORIGIN = 0x4000, LENGTH = 0x4000 	/* 16K bytes */&lt;br /&gt;
    RamLoc4 (rwx) : ORIGIN = 0x10000200, LENGTH = 0xe00 /* 3.5K bytes */&lt;br /&gt;
    RamUsb2 (rwx) : ORIGIN = 0x20004000, LENGTH = 0x800 /* 2K bytes */&lt;br /&gt;
}&lt;br /&gt;
    /* Define a symbol for the top of each memory region */&lt;br /&gt;
&lt;br /&gt;
    __top_MFlash32 = 0x4000 + 0x4000;&lt;br /&gt;
    __top_RamLoc4 = 0x10000200 + 0xe00;&lt;br /&gt;
    __top_RamUsb2 = 0x20004000 + 0x800;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Remap The NVIC Table ====&lt;br /&gt;
 1. Add Under Function Code In Your Program.&lt;br /&gt;
&lt;br /&gt;
    /* copy the nvic table to ram */&lt;br /&gt;
    static void copy_nvic_to_ram(void)&lt;br /&gt;
    {&lt;br /&gt;
        volatile uint32_t *dst, size;&lt;br /&gt;
        volatile const uint32_t *src;&amp;lt;br /&amp;gt;&lt;br /&gt;
        src = (volatile uint32_t *)APP_START_ADDR;//APP_START_ADDR Is The Application Program&#039;s Start Address. &lt;br /&gt;
        dst = (volatile uint32_t *)RAM_START_ADDR;//RAM_START_ADDR Is The RAM Start Address.&lt;br /&gt;
        size = NVIC_TABLE_LEN &amp;gt;&amp;gt; 2;//NVIC_TABLE_LEN Is The NVIC Table&#039;s Size.&lt;br /&gt;
        do {&lt;br /&gt;
            *dst++ = *src++;&lt;br /&gt;
        } while (--size);&amp;lt;br /&amp;gt;&lt;br /&gt;
        /* NVIC remap to RAM */&lt;br /&gt;
        Chip_SYSCTL_Map(0x01);&amp;lt;br /&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
 2. Config The Register To Remap NVIC Table To RAM&lt;br /&gt;
:[[File:LPC11u14 NVIC Table Remap1.png]]&lt;br /&gt;
 &amp;lt;big&amp;gt;&amp;lt;big&amp;gt;More See UM10462 LPC11U3x/2x/1x User manual,At The Page 22.&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Issues ===&lt;br /&gt;
&amp;lt;big&amp;gt;1. About Bootloader USB Descriptor:&amp;lt;/big&amp;gt;&lt;br /&gt;
 Note the DFU Functional Descriptor&#039; wTransferSize size, It must equal the USBD_DFU_INIT_PARAM_T&#039;s wTransferSize.&lt;br /&gt;
&amp;lt;big&amp;gt;2. About IAP Transmission Data Size &amp;lt;/big&amp;gt;&lt;br /&gt;
 The data size should be 256 or 512 or 1024 or 4096 Bytes.&lt;br /&gt;
&amp;lt;big&amp;gt;3. About IAP Transmission Data Address &amp;lt;/big&amp;gt;&lt;br /&gt;
 The data address should be a 256 byte boundary.&lt;br /&gt;
&amp;lt;big&amp;gt;3. Why sometimes updata failed ?&amp;lt;/big&amp;gt;&lt;br /&gt;
 Now, I didn&#039;t find the real reason. But, I think the reason is the time of communication is not correct. &lt;br /&gt;
&amp;lt;big&amp;gt;3. Why sometimes updata finished, but the program don&#039;t run normally ?&amp;lt;/big&amp;gt;&lt;br /&gt;
 I think that I didn&#039;t check the flash address and the data address are right.&amp;lt;br /&amp;gt;&lt;br /&gt;
 I will add the check in the program later.&lt;br /&gt;
&lt;br /&gt;
=== References And Links ===&lt;br /&gt;
* [https://www.lpcware.com/lpcxpresso/download LPCXpress IDE Download]&lt;br /&gt;
* [http://www.usb.org/developers/docs/devclass_docs/DFU_1.1.pdf See More About DFU Protocol]&lt;br /&gt;
* [https://github.com/Canaan-Creative/Avalon-USB-converter Source Code]&lt;br /&gt;
* [http://docs.lpcware.com/usbromlib/v1.0/ USBD ROM Stack]&lt;br /&gt;
* [http://www.nxp.com/documents/user_manual/UM10462.pdf LPC11U1X User Manual]&lt;br /&gt;
* [http://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc11xx-packages-0 LPCOpen sourcecode]&lt;br /&gt;
* [http://docs.lpcware.com/lpcopen/v1.03/ LPCOpen docs]&lt;br /&gt;
* [http://www.lpcware.com/system/files/LPCXpressoLPC11U14revA_0.pdf LPC11U14 Rev A Schematic]&lt;br /&gt;
* [http://www.nxp.com/documents/errata_sheet/ES_LPC11U1X.pdf Errata sheet LPC11U1x]&lt;br /&gt;
* [http://support.code-red-tech.com/CodeRedWiki/UsingGDB?highlight=%28LPC\-Link%29 Using command line GDB]&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=File:LPC11u14_NVIC_Table_Remap1.png&amp;diff=59901</id>
		<title>File:LPC11u14 NVIC Table Remap1.png</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=File:LPC11u14_NVIC_Table_Remap1.png&amp;diff=59901"/>
		<updated>2016-01-08T10:06:36Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=File:LPC11u14_NVIC_Table_Remap.png&amp;diff=59900</id>
		<title>File:LPC11u14 NVIC Table Remap.png</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=File:LPC11u14_NVIC_Table_Remap.png&amp;diff=59900"/>
		<updated>2016-01-08T10:00:01Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: Johnson-Fan uploaded a new version of File:LPC11u14 NVIC Table Remap.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LPC11u14_NVIC_Table_Remap Register&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=File:LPC11u14_NVIC_Table_Remap.png&amp;diff=59899</id>
		<title>File:LPC11u14 NVIC Table Remap.png</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=File:LPC11u14_NVIC_Table_Remap.png&amp;diff=59899"/>
		<updated>2016-01-08T09:59:16Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: Johnson-Fan uploaded a new version of File:LPC11u14 NVIC Table Remap.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LPC11u14_NVIC_Table_Remap Register&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=File:LPC11u14_NVIC_Table_Remap.png&amp;diff=59898</id>
		<title>File:LPC11u14 NVIC Table Remap.png</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=File:LPC11u14_NVIC_Table_Remap.png&amp;diff=59898"/>
		<updated>2016-01-08T09:57:56Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: Johnson-Fan uploaded a new version of File:LPC11u14 NVIC Table Remap.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LPC11u14_NVIC_Table_Remap Register&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=File:LPC11u14_NVIC_Table_Remap.png&amp;diff=59897</id>
		<title>File:LPC11u14 NVIC Table Remap.png</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=File:LPC11u14_NVIC_Table_Remap.png&amp;diff=59897"/>
		<updated>2016-01-08T09:50:35Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: Johnson-Fan uploaded a new version of File:LPC11u14 NVIC Table Remap.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LPC11u14_NVIC_Table_Remap Register&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=File:LPC11u14_NVIC_Table_Remap.png&amp;diff=59896</id>
		<title>File:LPC11u14 NVIC Table Remap.png</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=File:LPC11u14_NVIC_Table_Remap.png&amp;diff=59896"/>
		<updated>2016-01-08T09:48:29Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: Johnson-Fan uploaded a new version of File:LPC11u14 NVIC Table Remap.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LPC11u14_NVIC_Table_Remap Register&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=File:LPC11u14_NVIC_Table_Remap.png&amp;diff=59895</id>
		<title>File:LPC11u14 NVIC Table Remap.png</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=File:LPC11u14_NVIC_Table_Remap.png&amp;diff=59895"/>
		<updated>2016-01-08T09:35:07Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: LPC11u14_NVIC_Table_Remap Register&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LPC11u14_NVIC_Table_Remap Register&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59894</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59894"/>
		<updated>2016-01-08T09:10:58Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* Modify The AUC2 Firmware Start Address */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
=== Avalon6 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUC2 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
==== Support USB-DFU Mode ====&lt;br /&gt;
 We can use dfu-util under Ubuntu 14.04 or later updata new firmware for AUC2.&lt;br /&gt;
&lt;br /&gt;
==== Using USB-DFU Protocol ====&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Device Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
!Offset!!Field!!Size!!Value!!Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 12h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 01h || DEVICE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bcdUSB || 2 || 0100h || USB specification release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bDeviceClass || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bDeviceSubClass || 1 || 00h || See interface&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bDeviceProtocol || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bMaxPacketSize0 || 1 || 8,16,32,64 || Maximum packet size for endpoint.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || idVendor || 2 || ID || Vendor ID. Assigned by the USB-IF.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || idProduct || 2 || ID || Product ID. Assigned by manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || bcdDevice || 2 || BCD || Device release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 14 || iManufacturer || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 15 || iProduct || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || iSerialNumber || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || bNumConfigurations || 1 || 01h || One configuration only for DFU. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 01h || Runtime protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Functional Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 21h || DFU FUNCTIONAL descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bmAttributes || 1 || Bit mask || DFU attributes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 7……4: reserved&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 3: device will perform a bus detach-attach sequence when it receives a DFU_DETACH request. The host must not issue a USB Reset. (bitWillDetach)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 2: device is able to communicate via USB afeter Manifestation phase.(bitManifestationTolerant)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no, must see bus reset&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit1: upload capable(bitCanUpload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit0: download capable(bitCanDnload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || wDetachTimeOut || 2 || Number || Time,in milliseconds, that the device will wait after receipt of the DFU_DETACH request. if this time elapses without a USB reaset, then the device will terminate the Reconfiguration phase and revert back to normal operation . This repreents the maximum time that the device can wait(depending on its timers, etc.).The host may specify a shorter timeout in the DFU_DETACH request.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || wTransferSize || 2 || Number || Maximum number of bytes that the device can accept per control-write transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bcdDFUVersion || 2 || BCD || Numeric expression identifying the version of the DFU Specification release.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Mode Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 02h || DFU mode protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== USB-DFU Product&#039;s USB Descriptor ====&lt;br /&gt;
[[File:USB-DFU Descriptor.png]]&lt;br /&gt;
&lt;br /&gt;
==== DFU Updata Process Diagram ====&lt;br /&gt;
[[File:UpdataProcess.png]]&lt;br /&gt;
&lt;br /&gt;
==== Judge Updating Program Or Application Program ====&lt;br /&gt;
 I used a updata flag which is a four bytes word and is writed at fixd flash address (0x8000 - 4)&lt;br /&gt;
&lt;br /&gt;
 The flag&#039;s value is 0xAABBCCDD&lt;br /&gt;
&lt;br /&gt;
 When the bootloader program run, first it judge the updata flag, if the updata falg is not equal 0xAABBCCDD, it will jump to application program.&lt;br /&gt;
 Otherwise it will run to updata program.&lt;br /&gt;
&lt;br /&gt;
==== Jump To Application Program ====&lt;br /&gt;
 When we don&#039;t want to updata application program, the bootloader program should run to application program.&lt;br /&gt;
&lt;br /&gt;
 In order to achieve this goal, we can add under code in your bootloader program.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4000&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4000 is my application program&#039;s MSP point, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov sp, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4004&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4004 is my application program reset-function entry address, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov pc, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modify dfu-util For Ubuntu 14.04 ====&lt;br /&gt;
 #Inside your home directory, download dfu-util&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.openezx.org/dfu-util.git&lt;br /&gt;
&lt;br /&gt;
 open dfu-util/src/dfu_load.c&lt;br /&gt;
&lt;br /&gt;
 add this instruction &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&lt;br /&gt;
&lt;br /&gt;
 cd dfu-util&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
 The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
&lt;br /&gt;
=== Add DFU In AUC2 Firmware ===&lt;br /&gt;
==== Modify The AUC2 Firmware Start Address ====&lt;br /&gt;
 1. We modify the start address at 0x4000,because the bootloader&#039;s size is 0x4000.&lt;br /&gt;
&lt;br /&gt;
 2. We modify the *.ld file. And my *.ld file is avalon-usb-converter.ld, you can find your *.ld file.&lt;br /&gt;
&lt;br /&gt;
:{|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;big&amp;gt;Before Modification&amp;lt;/big&amp;gt;&lt;br /&gt;
! &amp;lt;big&amp;gt;After  Modification&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|MEMORY&lt;br /&gt;
{&lt;br /&gt;
    /* Define each memory region */&lt;br /&gt;
&lt;br /&gt;
    MFlash32 (rx) : ORIGIN = 0x0, LENGTH = 0x8000 	/* 32K bytes */&lt;br /&gt;
    RamLoc4 (rwx) : ORIGIN = 0x10000000, LENGTH = 0x1000 /* 4K bytes */&lt;br /&gt;
    RamUsb2 (rwx) : ORIGIN = 0x20004000, LENGTH = 0x800 /* 2K bytes */&lt;br /&gt;
}&lt;br /&gt;
    /* Define a symbol for the top of each memory region */&lt;br /&gt;
&lt;br /&gt;
    __top_MFlash32 = 0x0 + 0x8000;&lt;br /&gt;
    __top_RamLoc4 = 0x1000000 + 0x1000;&lt;br /&gt;
    __top_RamUsb2 = 0x20004000 + 0x800;&lt;br /&gt;
|MEMORY&lt;br /&gt;
{&lt;br /&gt;
    /* Define each memory region */&lt;br /&gt;
&lt;br /&gt;
    MFlash32 (rx) : ORIGIN = 0x4000, LENGTH = 0x4000 	/* 16K bytes */&lt;br /&gt;
    RamLoc4 (rwx) : ORIGIN = 0x10000200, LENGTH = 0xe00 /* 3.5K bytes */&lt;br /&gt;
    RamUsb2 (rwx) : ORIGIN = 0x20004000, LENGTH = 0x800 /* 2K bytes */&lt;br /&gt;
}&lt;br /&gt;
    /* Define a symbol for the top of each memory region */&lt;br /&gt;
&lt;br /&gt;
    __top_MFlash32 = 0x4000 + 0x4000;&lt;br /&gt;
    __top_RamLoc4 = 0x10000200 + 0xe00;&lt;br /&gt;
    __top_RamUsb2 = 0x20004000 + 0x800;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Modify The LPC11U14 RAM Start Address ====&lt;br /&gt;
==== Remap The NVIC Table ====&lt;br /&gt;
&lt;br /&gt;
=== Issues ===&lt;br /&gt;
&amp;lt;big&amp;gt;1. About Bootloader USB Descriptor:&amp;lt;/big&amp;gt;&lt;br /&gt;
 Note the DFU Functional Descriptor&#039; wTransferSize size, It must equal the USBD_DFU_INIT_PARAM_T&#039;s wTransferSize.&lt;br /&gt;
&amp;lt;big&amp;gt;2. About IAP Transmission Data Size &amp;lt;/big&amp;gt;&lt;br /&gt;
 The data size should be 256 or 512 or 1024 or 4096 Bytes.&lt;br /&gt;
&amp;lt;big&amp;gt;3. About IAP Transmission Data Address &amp;lt;/big&amp;gt;&lt;br /&gt;
 The data address should be a 256 byte boundary.&lt;br /&gt;
&amp;lt;big&amp;gt;3. Why sometimes updata failed ?&amp;lt;/big&amp;gt;&lt;br /&gt;
 Now, I didn&#039;t find the real reason. But, I think the reason is the time of communication is not correct. &lt;br /&gt;
&amp;lt;big&amp;gt;3. Why sometimes updata finished, but the program don&#039;t run normally ?&amp;lt;/big&amp;gt;&lt;br /&gt;
 I think that I didn&#039;t check the flash address and the data address are right.&amp;lt;br /&amp;gt;&lt;br /&gt;
 I will add the check in the program later.&lt;br /&gt;
&lt;br /&gt;
=== References And Links ===&lt;br /&gt;
* [https://www.lpcware.com/lpcxpresso/download LPCXpress IDE Download]&lt;br /&gt;
* [http://www.usb.org/developers/docs/devclass_docs/DFU_1.1.pdf See More About DFU Protocol]&lt;br /&gt;
* [https://github.com/Canaan-Creative/Avalon-USB-converter Source Code]&lt;br /&gt;
* [http://docs.lpcware.com/usbromlib/v1.0/ USBD ROM Stack]&lt;br /&gt;
* [http://www.nxp.com/documents/user_manual/UM10462.pdf LPC11U1X User Manual]&lt;br /&gt;
* [http://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc11xx-packages-0 LPCOpen sourcecode]&lt;br /&gt;
* [http://docs.lpcware.com/lpcopen/v1.03/ LPCOpen docs]&lt;br /&gt;
* [http://www.lpcware.com/system/files/LPCXpressoLPC11U14revA_0.pdf LPC11U14 Rev A Schematic]&lt;br /&gt;
* [http://www.nxp.com/documents/errata_sheet/ES_LPC11U1X.pdf Errata sheet LPC11U1x]&lt;br /&gt;
* [http://support.code-red-tech.com/CodeRedWiki/UsingGDB?highlight=%28LPC\-Link%29 Using command line GDB]&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59893</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59893"/>
		<updated>2016-01-08T05:08:11Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* Modify The AUC2 Firmware Start Address */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
=== Avalon6 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUC2 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
==== Support USB-DFU Mode ====&lt;br /&gt;
 We can use dfu-util under Ubuntu 14.04 or later updata new firmware for AUC2.&lt;br /&gt;
&lt;br /&gt;
==== Using USB-DFU Protocol ====&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Device Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
!Offset!!Field!!Size!!Value!!Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 12h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 01h || DEVICE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bcdUSB || 2 || 0100h || USB specification release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bDeviceClass || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bDeviceSubClass || 1 || 00h || See interface&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bDeviceProtocol || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bMaxPacketSize0 || 1 || 8,16,32,64 || Maximum packet size for endpoint.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || idVendor || 2 || ID || Vendor ID. Assigned by the USB-IF.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || idProduct || 2 || ID || Product ID. Assigned by manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || bcdDevice || 2 || BCD || Device release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 14 || iManufacturer || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 15 || iProduct || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || iSerialNumber || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || bNumConfigurations || 1 || 01h || One configuration only for DFU. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 01h || Runtime protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Functional Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 21h || DFU FUNCTIONAL descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bmAttributes || 1 || Bit mask || DFU attributes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 7……4: reserved&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 3: device will perform a bus detach-attach sequence when it receives a DFU_DETACH request. The host must not issue a USB Reset. (bitWillDetach)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 2: device is able to communicate via USB afeter Manifestation phase.(bitManifestationTolerant)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no, must see bus reset&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit1: upload capable(bitCanUpload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit0: download capable(bitCanDnload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || wDetachTimeOut || 2 || Number || Time,in milliseconds, that the device will wait after receipt of the DFU_DETACH request. if this time elapses without a USB reaset, then the device will terminate the Reconfiguration phase and revert back to normal operation . This repreents the maximum time that the device can wait(depending on its timers, etc.).The host may specify a shorter timeout in the DFU_DETACH request.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || wTransferSize || 2 || Number || Maximum number of bytes that the device can accept per control-write transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bcdDFUVersion || 2 || BCD || Numeric expression identifying the version of the DFU Specification release.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Mode Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 02h || DFU mode protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== USB-DFU Product&#039;s USB Descriptor ====&lt;br /&gt;
[[File:USB-DFU Descriptor.png]]&lt;br /&gt;
&lt;br /&gt;
==== DFU Updata Process Diagram ====&lt;br /&gt;
[[File:UpdataProcess.png]]&lt;br /&gt;
&lt;br /&gt;
==== Judge Updating Program Or Application Program ====&lt;br /&gt;
 I used a updata flag which is a four bytes word and is writed at fixd flash address (0x8000 - 4)&lt;br /&gt;
&lt;br /&gt;
 The flag&#039;s value is 0xAABBCCDD&lt;br /&gt;
&lt;br /&gt;
 When the bootloader program run, first it judge the updata flag, if the updata falg is not equal 0xAABBCCDD, it will jump to application program.&lt;br /&gt;
 Otherwise it will run to updata program.&lt;br /&gt;
&lt;br /&gt;
==== Jump To Application Program ====&lt;br /&gt;
 When we don&#039;t want to updata application program, the bootloader program should run to application program.&lt;br /&gt;
&lt;br /&gt;
 In order to achieve this goal, we can add under code in your bootloader program.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4000&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4000 is my application program&#039;s MSP point, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov sp, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4004&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4004 is my application program reset-function entry address, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov pc, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modify dfu-util For Ubuntu 14.04 ====&lt;br /&gt;
 #Inside your home directory, download dfu-util&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.openezx.org/dfu-util.git&lt;br /&gt;
&lt;br /&gt;
 open dfu-util/src/dfu_load.c&lt;br /&gt;
&lt;br /&gt;
 add this instruction &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&lt;br /&gt;
&lt;br /&gt;
 cd dfu-util&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
 The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
&lt;br /&gt;
=== Add DFU In AUC2 Firmware ===&lt;br /&gt;
==== Modify The AUC2 Firmware Start Address ====&lt;br /&gt;
 1. We modify the start address at 0x4000,because the bootloader&#039;s size is 0x4000.&lt;br /&gt;
 2. We modify the *.ld file. And my *.ld file is avalon-usb-converter.ld, you can find your *.ld file.&lt;br /&gt;
    Modify like:&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
！ Before modification&lt;br /&gt;
！ After  modification&lt;br /&gt;
|-&lt;br /&gt;
|MEMORY&lt;br /&gt;
{&lt;br /&gt;
	/* Define each memory region */&lt;br /&gt;
	MFlash32 (rx) : ORIGIN = 0x4000, LENGTH = 0x4000 	/* 16K bytes */&lt;br /&gt;
	RamLoc4 (rwx) : ORIGIN = 0x10000200, LENGTH = 0xe00 /* 3.5K bytes */&lt;br /&gt;
	RamUsb2 (rwx) : ORIGIN = 0x20004000, LENGTH = 0x800 /* 2K bytes */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Define a symbol for the top of each memory region */&lt;br /&gt;
__top_MFlash32 = 0x4000 + 0x4000;&lt;br /&gt;
__top_RamLoc4 = 0x10000200 + 0xe00;&lt;br /&gt;
__top_RamUsb2 = 0x20004000 + 0x800;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Modify The LPC11U14 RAM Start Address ====&lt;br /&gt;
==== Remap The NVIC Table ====&lt;br /&gt;
&lt;br /&gt;
=== Issues ===&lt;br /&gt;
&amp;lt;big&amp;gt;1. About Bootloader USB Descriptor:&amp;lt;/big&amp;gt;&lt;br /&gt;
 Note the DFU Functional Descriptor&#039; wTransferSize size, It must equal the USBD_DFU_INIT_PARAM_T&#039;s wTransferSize.&lt;br /&gt;
&amp;lt;big&amp;gt;2. About IAP Transmission Data Size &amp;lt;/big&amp;gt;&lt;br /&gt;
 The data size should be 256 or 512 or 1024 or 4096 Bytes.&lt;br /&gt;
&amp;lt;big&amp;gt;3. About IAP Transmission Data Address &amp;lt;/big&amp;gt;&lt;br /&gt;
 The data address should be a 256 byte boundary.&lt;br /&gt;
&amp;lt;big&amp;gt;3. Why sometimes updata failed ?&amp;lt;/big&amp;gt;&lt;br /&gt;
 Now, I didn&#039;t find the real reason. But, I think the reason is the time of communication is not correct. &lt;br /&gt;
&amp;lt;big&amp;gt;3. Why sometimes updata finished, but the program don&#039;t run normally ?&amp;lt;/big&amp;gt;&lt;br /&gt;
 I think that I didn&#039;t check the flash address and the data address are right.&amp;lt;br /&amp;gt;&lt;br /&gt;
 I will add the check in the program later.&lt;br /&gt;
&lt;br /&gt;
=== References And Links ===&lt;br /&gt;
* [https://www.lpcware.com/lpcxpresso/download LPCXpress IDE Download]&lt;br /&gt;
* [http://www.usb.org/developers/docs/devclass_docs/DFU_1.1.pdf See More About DFU Protocol]&lt;br /&gt;
* [https://github.com/Canaan-Creative/Avalon-USB-converter Source Code]&lt;br /&gt;
* [http://docs.lpcware.com/usbromlib/v1.0/ USBD ROM Stack]&lt;br /&gt;
* [http://www.nxp.com/documents/user_manual/UM10462.pdf LPC11U1X User Manual]&lt;br /&gt;
* [http://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc11xx-packages-0 LPCOpen sourcecode]&lt;br /&gt;
* [http://docs.lpcware.com/lpcopen/v1.03/ LPCOpen docs]&lt;br /&gt;
* [http://www.lpcware.com/system/files/LPCXpressoLPC11U14revA_0.pdf LPC11U14 Rev A Schematic]&lt;br /&gt;
* [http://www.nxp.com/documents/errata_sheet/ES_LPC11U1X.pdf Errata sheet LPC11U1x]&lt;br /&gt;
* [http://support.code-red-tech.com/CodeRedWiki/UsingGDB?highlight=%28LPC\-Link%29 Using command line GDB]&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59892</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59892"/>
		<updated>2016-01-08T04:56:19Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* Add DFU In AUC2 Firmware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
=== Avalon6 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUC2 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
==== Support USB-DFU Mode ====&lt;br /&gt;
 We can use dfu-util under Ubuntu 14.04 or later updata new firmware for AUC2.&lt;br /&gt;
&lt;br /&gt;
==== Using USB-DFU Protocol ====&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Device Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
!Offset!!Field!!Size!!Value!!Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 12h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 01h || DEVICE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bcdUSB || 2 || 0100h || USB specification release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bDeviceClass || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bDeviceSubClass || 1 || 00h || See interface&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bDeviceProtocol || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bMaxPacketSize0 || 1 || 8,16,32,64 || Maximum packet size for endpoint.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || idVendor || 2 || ID || Vendor ID. Assigned by the USB-IF.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || idProduct || 2 || ID || Product ID. Assigned by manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || bcdDevice || 2 || BCD || Device release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 14 || iManufacturer || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 15 || iProduct || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || iSerialNumber || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || bNumConfigurations || 1 || 01h || One configuration only for DFU. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 01h || Runtime protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Functional Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 21h || DFU FUNCTIONAL descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bmAttributes || 1 || Bit mask || DFU attributes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 7……4: reserved&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 3: device will perform a bus detach-attach sequence when it receives a DFU_DETACH request. The host must not issue a USB Reset. (bitWillDetach)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 2: device is able to communicate via USB afeter Manifestation phase.(bitManifestationTolerant)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no, must see bus reset&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit1: upload capable(bitCanUpload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit0: download capable(bitCanDnload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || wDetachTimeOut || 2 || Number || Time,in milliseconds, that the device will wait after receipt of the DFU_DETACH request. if this time elapses without a USB reaset, then the device will terminate the Reconfiguration phase and revert back to normal operation . This repreents the maximum time that the device can wait(depending on its timers, etc.).The host may specify a shorter timeout in the DFU_DETACH request.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || wTransferSize || 2 || Number || Maximum number of bytes that the device can accept per control-write transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bcdDFUVersion || 2 || BCD || Numeric expression identifying the version of the DFU Specification release.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Mode Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 02h || DFU mode protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== USB-DFU Product&#039;s USB Descriptor ====&lt;br /&gt;
[[File:USB-DFU Descriptor.png]]&lt;br /&gt;
&lt;br /&gt;
==== DFU Updata Process Diagram ====&lt;br /&gt;
[[File:UpdataProcess.png]]&lt;br /&gt;
&lt;br /&gt;
==== Judge Updating Program Or Application Program ====&lt;br /&gt;
 I used a updata flag which is a four bytes word and is writed at fixd flash address (0x8000 - 4)&lt;br /&gt;
&lt;br /&gt;
 The flag&#039;s value is 0xAABBCCDD&lt;br /&gt;
&lt;br /&gt;
 When the bootloader program run, first it judge the updata flag, if the updata falg is not equal 0xAABBCCDD, it will jump to application program.&lt;br /&gt;
 Otherwise it will run to updata program.&lt;br /&gt;
&lt;br /&gt;
==== Jump To Application Program ====&lt;br /&gt;
 When we don&#039;t want to updata application program, the bootloader program should run to application program.&lt;br /&gt;
&lt;br /&gt;
 In order to achieve this goal, we can add under code in your bootloader program.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4000&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4000 is my application program&#039;s MSP point, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov sp, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4004&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4004 is my application program reset-function entry address, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov pc, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modify dfu-util For Ubuntu 14.04 ====&lt;br /&gt;
 #Inside your home directory, download dfu-util&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.openezx.org/dfu-util.git&lt;br /&gt;
&lt;br /&gt;
 open dfu-util/src/dfu_load.c&lt;br /&gt;
&lt;br /&gt;
 add this instruction &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&lt;br /&gt;
&lt;br /&gt;
 cd dfu-util&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
 The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
&lt;br /&gt;
=== Add DFU In AUC2 Firmware ===&lt;br /&gt;
==== Modify The AUC2 Firmware Start Address ====&lt;br /&gt;
==== Modify The LPC11U14 RAM Start Address ====&lt;br /&gt;
==== Remap The NVIC Table ====&lt;br /&gt;
&lt;br /&gt;
=== Issues ===&lt;br /&gt;
&amp;lt;big&amp;gt;1. About Bootloader USB Descriptor:&amp;lt;/big&amp;gt;&lt;br /&gt;
 Note the DFU Functional Descriptor&#039; wTransferSize size, It must equal the USBD_DFU_INIT_PARAM_T&#039;s wTransferSize.&lt;br /&gt;
&amp;lt;big&amp;gt;2. About IAP Transmission Data Size &amp;lt;/big&amp;gt;&lt;br /&gt;
 The data size should be 256 or 512 or 1024 or 4096 Bytes.&lt;br /&gt;
&amp;lt;big&amp;gt;3. About IAP Transmission Data Address &amp;lt;/big&amp;gt;&lt;br /&gt;
 The data address should be a 256 byte boundary.&lt;br /&gt;
&amp;lt;big&amp;gt;3. Why sometimes updata failed ?&amp;lt;/big&amp;gt;&lt;br /&gt;
 Now, I didn&#039;t find the real reason. But, I think the reason is the time of communication is not correct. &lt;br /&gt;
&amp;lt;big&amp;gt;3. Why sometimes updata finished, but the program don&#039;t run normally ?&amp;lt;/big&amp;gt;&lt;br /&gt;
 I think that I didn&#039;t check the flash address and the data address are right.&amp;lt;br /&amp;gt;&lt;br /&gt;
 I will add the check in the program later.&lt;br /&gt;
&lt;br /&gt;
=== References And Links ===&lt;br /&gt;
* [https://www.lpcware.com/lpcxpresso/download LPCXpress IDE Download]&lt;br /&gt;
* [http://www.usb.org/developers/docs/devclass_docs/DFU_1.1.pdf See More About DFU Protocol]&lt;br /&gt;
* [https://github.com/Canaan-Creative/Avalon-USB-converter Source Code]&lt;br /&gt;
* [http://docs.lpcware.com/usbromlib/v1.0/ USBD ROM Stack]&lt;br /&gt;
* [http://www.nxp.com/documents/user_manual/UM10462.pdf LPC11U1X User Manual]&lt;br /&gt;
* [http://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc11xx-packages-0 LPCOpen sourcecode]&lt;br /&gt;
* [http://docs.lpcware.com/lpcopen/v1.03/ LPCOpen docs]&lt;br /&gt;
* [http://www.lpcware.com/system/files/LPCXpressoLPC11U14revA_0.pdf LPC11U14 Rev A Schematic]&lt;br /&gt;
* [http://www.nxp.com/documents/errata_sheet/ES_LPC11U1X.pdf Errata sheet LPC11U1x]&lt;br /&gt;
* [http://support.code-red-tech.com/CodeRedWiki/UsingGDB?highlight=%28LPC\-Link%29 Using command line GDB]&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59891</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59891"/>
		<updated>2016-01-08T04:55:02Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* Add DFU In AUC2 Firmware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
=== Avalon6 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUC2 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
==== Support USB-DFU Mode ====&lt;br /&gt;
 We can use dfu-util under Ubuntu 14.04 or later updata new firmware for AUC2.&lt;br /&gt;
&lt;br /&gt;
==== Using USB-DFU Protocol ====&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Device Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
!Offset!!Field!!Size!!Value!!Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 12h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 01h || DEVICE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bcdUSB || 2 || 0100h || USB specification release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bDeviceClass || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bDeviceSubClass || 1 || 00h || See interface&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bDeviceProtocol || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bMaxPacketSize0 || 1 || 8,16,32,64 || Maximum packet size for endpoint.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || idVendor || 2 || ID || Vendor ID. Assigned by the USB-IF.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || idProduct || 2 || ID || Product ID. Assigned by manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || bcdDevice || 2 || BCD || Device release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 14 || iManufacturer || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 15 || iProduct || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || iSerialNumber || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || bNumConfigurations || 1 || 01h || One configuration only for DFU. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 01h || Runtime protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Functional Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 21h || DFU FUNCTIONAL descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bmAttributes || 1 || Bit mask || DFU attributes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 7……4: reserved&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 3: device will perform a bus detach-attach sequence when it receives a DFU_DETACH request. The host must not issue a USB Reset. (bitWillDetach)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 2: device is able to communicate via USB afeter Manifestation phase.(bitManifestationTolerant)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no, must see bus reset&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit1: upload capable(bitCanUpload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit0: download capable(bitCanDnload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || wDetachTimeOut || 2 || Number || Time,in milliseconds, that the device will wait after receipt of the DFU_DETACH request. if this time elapses without a USB reaset, then the device will terminate the Reconfiguration phase and revert back to normal operation . This repreents the maximum time that the device can wait(depending on its timers, etc.).The host may specify a shorter timeout in the DFU_DETACH request.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || wTransferSize || 2 || Number || Maximum number of bytes that the device can accept per control-write transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bcdDFUVersion || 2 || BCD || Numeric expression identifying the version of the DFU Specification release.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Mode Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 02h || DFU mode protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== USB-DFU Product&#039;s USB Descriptor ====&lt;br /&gt;
[[File:USB-DFU Descriptor.png]]&lt;br /&gt;
&lt;br /&gt;
==== DFU Updata Process Diagram ====&lt;br /&gt;
[[File:UpdataProcess.png]]&lt;br /&gt;
&lt;br /&gt;
==== Judge Updating Program Or Application Program ====&lt;br /&gt;
 I used a updata flag which is a four bytes word and is writed at fixd flash address (0x8000 - 4)&lt;br /&gt;
&lt;br /&gt;
 The flag&#039;s value is 0xAABBCCDD&lt;br /&gt;
&lt;br /&gt;
 When the bootloader program run, first it judge the updata flag, if the updata falg is not equal 0xAABBCCDD, it will jump to application program.&lt;br /&gt;
 Otherwise it will run to updata program.&lt;br /&gt;
&lt;br /&gt;
==== Jump To Application Program ====&lt;br /&gt;
 When we don&#039;t want to updata application program, the bootloader program should run to application program.&lt;br /&gt;
&lt;br /&gt;
 In order to achieve this goal, we can add under code in your bootloader program.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4000&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4000 is my application program&#039;s MSP point, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov sp, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4004&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4004 is my application program reset-function entry address, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov pc, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modify dfu-util For Ubuntu 14.04 ====&lt;br /&gt;
 #Inside your home directory, download dfu-util&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.openezx.org/dfu-util.git&lt;br /&gt;
&lt;br /&gt;
 open dfu-util/src/dfu_load.c&lt;br /&gt;
&lt;br /&gt;
 add this instruction &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&lt;br /&gt;
&lt;br /&gt;
 cd dfu-util&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
 The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
&lt;br /&gt;
=== Add DFU In AUC2 Firmware ===&lt;br /&gt;
#Modify The AUC2 Firmware Start Address&lt;br /&gt;
#Modify The LPC11U14 RAM Start Address&lt;br /&gt;
#Remap The NVIC Table&lt;br /&gt;
&lt;br /&gt;
=== Issues ===&lt;br /&gt;
&amp;lt;big&amp;gt;1. About Bootloader USB Descriptor:&amp;lt;/big&amp;gt;&lt;br /&gt;
 Note the DFU Functional Descriptor&#039; wTransferSize size, It must equal the USBD_DFU_INIT_PARAM_T&#039;s wTransferSize.&lt;br /&gt;
&amp;lt;big&amp;gt;2. About IAP Transmission Data Size &amp;lt;/big&amp;gt;&lt;br /&gt;
 The data size should be 256 or 512 or 1024 or 4096 Bytes.&lt;br /&gt;
&amp;lt;big&amp;gt;3. About IAP Transmission Data Address &amp;lt;/big&amp;gt;&lt;br /&gt;
 The data address should be a 256 byte boundary.&lt;br /&gt;
&amp;lt;big&amp;gt;3. Why sometimes updata failed ?&amp;lt;/big&amp;gt;&lt;br /&gt;
 Now, I didn&#039;t find the real reason. But, I think the reason is the time of communication is not correct. &lt;br /&gt;
&amp;lt;big&amp;gt;3. Why sometimes updata finished, but the program don&#039;t run normally ?&amp;lt;/big&amp;gt;&lt;br /&gt;
 I think that I didn&#039;t check the flash address and the data address are right.&amp;lt;br /&amp;gt;&lt;br /&gt;
 I will add the check in the program later.&lt;br /&gt;
&lt;br /&gt;
=== References And Links ===&lt;br /&gt;
* [https://www.lpcware.com/lpcxpresso/download LPCXpress IDE Download]&lt;br /&gt;
* [http://www.usb.org/developers/docs/devclass_docs/DFU_1.1.pdf See More About DFU Protocol]&lt;br /&gt;
* [https://github.com/Canaan-Creative/Avalon-USB-converter Source Code]&lt;br /&gt;
* [http://docs.lpcware.com/usbromlib/v1.0/ USBD ROM Stack]&lt;br /&gt;
* [http://www.nxp.com/documents/user_manual/UM10462.pdf LPC11U1X User Manual]&lt;br /&gt;
* [http://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc11xx-packages-0 LPCOpen sourcecode]&lt;br /&gt;
* [http://docs.lpcware.com/lpcopen/v1.03/ LPCOpen docs]&lt;br /&gt;
* [http://www.lpcware.com/system/files/LPCXpressoLPC11U14revA_0.pdf LPC11U14 Rev A Schematic]&lt;br /&gt;
* [http://www.nxp.com/documents/errata_sheet/ES_LPC11U1X.pdf Errata sheet LPC11U1x]&lt;br /&gt;
* [http://support.code-red-tech.com/CodeRedWiki/UsingGDB?highlight=%28LPC\-Link%29 Using command line GDB]&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59890</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59890"/>
		<updated>2016-01-08T04:50:37Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* AUC2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
=== Avalon6 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUC2 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
==== Support USB-DFU Mode ====&lt;br /&gt;
 We can use dfu-util under Ubuntu 14.04 or later updata new firmware for AUC2.&lt;br /&gt;
&lt;br /&gt;
==== Using USB-DFU Protocol ====&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Device Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
!Offset!!Field!!Size!!Value!!Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 12h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 01h || DEVICE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bcdUSB || 2 || 0100h || USB specification release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bDeviceClass || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bDeviceSubClass || 1 || 00h || See interface&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bDeviceProtocol || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bMaxPacketSize0 || 1 || 8,16,32,64 || Maximum packet size for endpoint.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || idVendor || 2 || ID || Vendor ID. Assigned by the USB-IF.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || idProduct || 2 || ID || Product ID. Assigned by manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || bcdDevice || 2 || BCD || Device release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 14 || iManufacturer || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 15 || iProduct || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || iSerialNumber || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || bNumConfigurations || 1 || 01h || One configuration only for DFU. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 01h || Runtime protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Functional Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 21h || DFU FUNCTIONAL descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bmAttributes || 1 || Bit mask || DFU attributes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 7……4: reserved&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 3: device will perform a bus detach-attach sequence when it receives a DFU_DETACH request. The host must not issue a USB Reset. (bitWillDetach)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 2: device is able to communicate via USB afeter Manifestation phase.(bitManifestationTolerant)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no, must see bus reset&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit1: upload capable(bitCanUpload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit0: download capable(bitCanDnload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || wDetachTimeOut || 2 || Number || Time,in milliseconds, that the device will wait after receipt of the DFU_DETACH request. if this time elapses without a USB reaset, then the device will terminate the Reconfiguration phase and revert back to normal operation . This repreents the maximum time that the device can wait(depending on its timers, etc.).The host may specify a shorter timeout in the DFU_DETACH request.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || wTransferSize || 2 || Number || Maximum number of bytes that the device can accept per control-write transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bcdDFUVersion || 2 || BCD || Numeric expression identifying the version of the DFU Specification release.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Mode Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 02h || DFU mode protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== USB-DFU Product&#039;s USB Descriptor ====&lt;br /&gt;
[[File:USB-DFU Descriptor.png]]&lt;br /&gt;
&lt;br /&gt;
==== DFU Updata Process Diagram ====&lt;br /&gt;
[[File:UpdataProcess.png]]&lt;br /&gt;
&lt;br /&gt;
==== Judge Updating Program Or Application Program ====&lt;br /&gt;
 I used a updata flag which is a four bytes word and is writed at fixd flash address (0x8000 - 4)&lt;br /&gt;
&lt;br /&gt;
 The flag&#039;s value is 0xAABBCCDD&lt;br /&gt;
&lt;br /&gt;
 When the bootloader program run, first it judge the updata flag, if the updata falg is not equal 0xAABBCCDD, it will jump to application program.&lt;br /&gt;
 Otherwise it will run to updata program.&lt;br /&gt;
&lt;br /&gt;
==== Jump To Application Program ====&lt;br /&gt;
 When we don&#039;t want to updata application program, the bootloader program should run to application program.&lt;br /&gt;
&lt;br /&gt;
 In order to achieve this goal, we can add under code in your bootloader program.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4000&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4000 is my application program&#039;s MSP point, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov sp, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4004&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4004 is my application program reset-function entry address, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov pc, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modify dfu-util For Ubuntu 14.04 ====&lt;br /&gt;
 #Inside your home directory, download dfu-util&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.openezx.org/dfu-util.git&lt;br /&gt;
&lt;br /&gt;
 open dfu-util/src/dfu_load.c&lt;br /&gt;
&lt;br /&gt;
 add this instruction &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&lt;br /&gt;
&lt;br /&gt;
 cd dfu-util&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
 The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
&lt;br /&gt;
=== Add DFU In AUC2 Firmware ===&lt;br /&gt;
&lt;br /&gt;
=== Issues ===&lt;br /&gt;
&amp;lt;big&amp;gt;1. About Bootloader USB Descriptor:&amp;lt;/big&amp;gt;&lt;br /&gt;
 Note the DFU Functional Descriptor&#039; wTransferSize size, It must equal the USBD_DFU_INIT_PARAM_T&#039;s wTransferSize.&lt;br /&gt;
&amp;lt;big&amp;gt;2. About IAP Transmission Data Size &amp;lt;/big&amp;gt;&lt;br /&gt;
 The data size should be 256 or 512 or 1024 or 4096 Bytes.&lt;br /&gt;
&amp;lt;big&amp;gt;3. About IAP Transmission Data Address &amp;lt;/big&amp;gt;&lt;br /&gt;
 The data address should be a 256 byte boundary.&lt;br /&gt;
&amp;lt;big&amp;gt;3. Why sometimes updata failed ?&amp;lt;/big&amp;gt;&lt;br /&gt;
 Now, I didn&#039;t find the real reason. But, I think the reason is the time of communication is not correct. &lt;br /&gt;
&amp;lt;big&amp;gt;3. Why sometimes updata finished, but the program don&#039;t run normally ?&amp;lt;/big&amp;gt;&lt;br /&gt;
 I think that I didn&#039;t check the flash address and the data address are right.&amp;lt;br /&amp;gt;&lt;br /&gt;
 I will add the check in the program later.&lt;br /&gt;
&lt;br /&gt;
=== References And Links ===&lt;br /&gt;
* [https://www.lpcware.com/lpcxpresso/download LPCXpress IDE Download]&lt;br /&gt;
* [http://www.usb.org/developers/docs/devclass_docs/DFU_1.1.pdf See More About DFU Protocol]&lt;br /&gt;
* [https://github.com/Canaan-Creative/Avalon-USB-converter Source Code]&lt;br /&gt;
* [http://docs.lpcware.com/usbromlib/v1.0/ USBD ROM Stack]&lt;br /&gt;
* [http://www.nxp.com/documents/user_manual/UM10462.pdf LPC11U1X User Manual]&lt;br /&gt;
* [http://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc11xx-packages-0 LPCOpen sourcecode]&lt;br /&gt;
* [http://docs.lpcware.com/lpcopen/v1.03/ LPCOpen docs]&lt;br /&gt;
* [http://www.lpcware.com/system/files/LPCXpressoLPC11U14revA_0.pdf LPC11U14 Rev A Schematic]&lt;br /&gt;
* [http://www.nxp.com/documents/errata_sheet/ES_LPC11U1X.pdf Errata sheet LPC11U1x]&lt;br /&gt;
* [http://support.code-red-tech.com/CodeRedWiki/UsingGDB?highlight=%28LPC\-Link%29 Using command line GDB]&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59889</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59889"/>
		<updated>2016-01-08T04:42:37Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* Issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
=== Avalon6 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUC2 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
==== Support USB-DFU Mode ====&lt;br /&gt;
 We can use dfu-util under Ubuntu 14.04 or later updata new firmware for AUC2.&lt;br /&gt;
&lt;br /&gt;
==== Using USB-DFU Protocol ====&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Device Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
!Offset!!Field!!Size!!Value!!Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 12h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 01h || DEVICE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bcdUSB || 2 || 0100h || USB specification release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bDeviceClass || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bDeviceSubClass || 1 || 00h || See interface&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bDeviceProtocol || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bMaxPacketSize0 || 1 || 8,16,32,64 || Maximum packet size for endpoint.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || idVendor || 2 || ID || Vendor ID. Assigned by the USB-IF.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || idProduct || 2 || ID || Product ID. Assigned by manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || bcdDevice || 2 || BCD || Device release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 14 || iManufacturer || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 15 || iProduct || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || iSerialNumber || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || bNumConfigurations || 1 || 01h || One configuration only for DFU. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 01h || Runtime protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Functional Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 21h || DFU FUNCTIONAL descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bmAttributes || 1 || Bit mask || DFU attributes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 7……4: reserved&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 3: device will perform a bus detach-attach sequence when it receives a DFU_DETACH request. The host must not issue a USB Reset. (bitWillDetach)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 2: device is able to communicate via USB afeter Manifestation phase.(bitManifestationTolerant)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no, must see bus reset&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit1: upload capable(bitCanUpload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit0: download capable(bitCanDnload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || wDetachTimeOut || 2 || Number || Time,in milliseconds, that the device will wait after receipt of the DFU_DETACH request. if this time elapses without a USB reaset, then the device will terminate the Reconfiguration phase and revert back to normal operation . This repreents the maximum time that the device can wait(depending on its timers, etc.).The host may specify a shorter timeout in the DFU_DETACH request.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || wTransferSize || 2 || Number || Maximum number of bytes that the device can accept per control-write transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bcdDFUVersion || 2 || BCD || Numeric expression identifying the version of the DFU Specification release.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Mode Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 02h || DFU mode protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== USB-DFU Product&#039;s USB Descriptor ====&lt;br /&gt;
[[File:USB-DFU Descriptor.png]]&lt;br /&gt;
&lt;br /&gt;
==== DFU Updata Process Diagram ====&lt;br /&gt;
[[File:UpdataProcess.png]]&lt;br /&gt;
&lt;br /&gt;
==== Judge Updating Program Or Application Program ====&lt;br /&gt;
 I used a updata flag which is a four bytes word and is writed at fixd flash address (0x8000 - 4)&lt;br /&gt;
&lt;br /&gt;
 The flag&#039;s value is 0xAABBCCDD&lt;br /&gt;
&lt;br /&gt;
 When the bootloader program run, first it judge the updata flag, if the updata falg is not equal 0xAABBCCDD, it will jump to application program.&lt;br /&gt;
 Otherwise it will run to updata program.&lt;br /&gt;
&lt;br /&gt;
==== Jump To Application Program ====&lt;br /&gt;
 When we don&#039;t want to updata application program, the bootloader program should run to application program.&lt;br /&gt;
&lt;br /&gt;
 In order to achieve this goal, we can add under code in your bootloader program.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4000&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4000 is my application program&#039;s MSP point, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov sp, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4004&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4004 is my application program reset-function entry address, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov pc, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modify dfu-util For Ubuntu 14.04 ====&lt;br /&gt;
 #Inside your home directory, download dfu-util&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.openezx.org/dfu-util.git&lt;br /&gt;
&lt;br /&gt;
 open dfu-util/src/dfu_load.c&lt;br /&gt;
&lt;br /&gt;
 add this instruction &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&lt;br /&gt;
&lt;br /&gt;
 cd dfu-util&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
 The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
=== Issues ===&lt;br /&gt;
&amp;lt;big&amp;gt;1. About Bootloader USB Descriptor:&amp;lt;/big&amp;gt;&lt;br /&gt;
 Note the DFU Functional Descriptor&#039; wTransferSize size, It must equal the USBD_DFU_INIT_PARAM_T&#039;s wTransferSize.&lt;br /&gt;
&amp;lt;big&amp;gt;2. About IAP Transmission Data Size &amp;lt;/big&amp;gt;&lt;br /&gt;
 The data size should be 256 or 512 or 1024 or 4096 Bytes.&lt;br /&gt;
&amp;lt;big&amp;gt;3. About IAP Transmission Data Address &amp;lt;/big&amp;gt;&lt;br /&gt;
 The data address should be a 256 byte boundary.&lt;br /&gt;
&amp;lt;big&amp;gt;3. Why sometimes updata failed ?&amp;lt;/big&amp;gt;&lt;br /&gt;
 Now, I didn&#039;t find the real reason. But, I think the reason is the time of communication is not correct. &lt;br /&gt;
&amp;lt;big&amp;gt;3. Why sometimes updata finished, but the program don&#039;t run normally ?&amp;lt;/big&amp;gt;&lt;br /&gt;
 I think that I didn&#039;t check the flash address and the data address are right.&amp;lt;br /&amp;gt;&lt;br /&gt;
 I will add the check in the program later.&lt;br /&gt;
&lt;br /&gt;
=== References And Links ===&lt;br /&gt;
* [https://www.lpcware.com/lpcxpresso/download LPCXpress IDE Download]&lt;br /&gt;
* [http://www.usb.org/developers/docs/devclass_docs/DFU_1.1.pdf See More About DFU Protocol]&lt;br /&gt;
* [https://github.com/Canaan-Creative/Avalon-USB-converter Source Code]&lt;br /&gt;
* [http://docs.lpcware.com/usbromlib/v1.0/ USBD ROM Stack]&lt;br /&gt;
* [http://www.nxp.com/documents/user_manual/UM10462.pdf LPC11U1X User Manual]&lt;br /&gt;
* [http://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc11xx-packages-0 LPCOpen sourcecode]&lt;br /&gt;
* [http://docs.lpcware.com/lpcopen/v1.03/ LPCOpen docs]&lt;br /&gt;
* [http://www.lpcware.com/system/files/LPCXpressoLPC11U14revA_0.pdf LPC11U14 Rev A Schematic]&lt;br /&gt;
* [http://www.nxp.com/documents/errata_sheet/ES_LPC11U1X.pdf Errata sheet LPC11U1x]&lt;br /&gt;
* [http://support.code-red-tech.com/CodeRedWiki/UsingGDB?highlight=%28LPC\-Link%29 Using command line GDB]&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59888</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59888"/>
		<updated>2016-01-08T04:13:31Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* AUC2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
=== Avalon6 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUC2 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
==== Support USB-DFU Mode ====&lt;br /&gt;
 We can use dfu-util under Ubuntu 14.04 or later updata new firmware for AUC2.&lt;br /&gt;
&lt;br /&gt;
==== Using USB-DFU Protocol ====&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Device Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
!Offset!!Field!!Size!!Value!!Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 12h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 01h || DEVICE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bcdUSB || 2 || 0100h || USB specification release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bDeviceClass || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bDeviceSubClass || 1 || 00h || See interface&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bDeviceProtocol || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bMaxPacketSize0 || 1 || 8,16,32,64 || Maximum packet size for endpoint.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || idVendor || 2 || ID || Vendor ID. Assigned by the USB-IF.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || idProduct || 2 || ID || Product ID. Assigned by manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || bcdDevice || 2 || BCD || Device release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 14 || iManufacturer || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 15 || iProduct || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || iSerialNumber || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || bNumConfigurations || 1 || 01h || One configuration only for DFU. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 01h || Runtime protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Functional Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 21h || DFU FUNCTIONAL descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bmAttributes || 1 || Bit mask || DFU attributes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 7……4: reserved&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 3: device will perform a bus detach-attach sequence when it receives a DFU_DETACH request. The host must not issue a USB Reset. (bitWillDetach)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 2: device is able to communicate via USB afeter Manifestation phase.(bitManifestationTolerant)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no, must see bus reset&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit1: upload capable(bitCanUpload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit0: download capable(bitCanDnload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || wDetachTimeOut || 2 || Number || Time,in milliseconds, that the device will wait after receipt of the DFU_DETACH request. if this time elapses without a USB reaset, then the device will terminate the Reconfiguration phase and revert back to normal operation . This repreents the maximum time that the device can wait(depending on its timers, etc.).The host may specify a shorter timeout in the DFU_DETACH request.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || wTransferSize || 2 || Number || Maximum number of bytes that the device can accept per control-write transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bcdDFUVersion || 2 || BCD || Numeric expression identifying the version of the DFU Specification release.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Mode Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 02h || DFU mode protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== USB-DFU Product&#039;s USB Descriptor ====&lt;br /&gt;
[[File:USB-DFU Descriptor.png]]&lt;br /&gt;
&lt;br /&gt;
==== DFU Updata Process Diagram ====&lt;br /&gt;
[[File:UpdataProcess.png]]&lt;br /&gt;
&lt;br /&gt;
==== Judge Updating Program Or Application Program ====&lt;br /&gt;
 I used a updata flag which is a four bytes word and is writed at fixd flash address (0x8000 - 4)&lt;br /&gt;
&lt;br /&gt;
 The flag&#039;s value is 0xAABBCCDD&lt;br /&gt;
&lt;br /&gt;
 When the bootloader program run, first it judge the updata flag, if the updata falg is not equal 0xAABBCCDD, it will jump to application program.&lt;br /&gt;
 Otherwise it will run to updata program.&lt;br /&gt;
&lt;br /&gt;
==== Jump To Application Program ====&lt;br /&gt;
 When we don&#039;t want to updata application program, the bootloader program should run to application program.&lt;br /&gt;
&lt;br /&gt;
 In order to achieve this goal, we can add under code in your bootloader program.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4000&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4000 is my application program&#039;s MSP point, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov sp, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4004&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4004 is my application program reset-function entry address, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov pc, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modify dfu-util For Ubuntu 14.04 ====&lt;br /&gt;
 #Inside your home directory, download dfu-util&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.openezx.org/dfu-util.git&lt;br /&gt;
&lt;br /&gt;
 open dfu-util/src/dfu_load.c&lt;br /&gt;
&lt;br /&gt;
 add this instruction &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&lt;br /&gt;
&lt;br /&gt;
 cd dfu-util&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
 The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
=== Issues ===&lt;br /&gt;
=== References And Links ===&lt;br /&gt;
* [https://www.lpcware.com/lpcxpresso/download LPCXpress IDE Download]&lt;br /&gt;
* [http://www.usb.org/developers/docs/devclass_docs/DFU_1.1.pdf See More About DFU Protocol]&lt;br /&gt;
* [https://github.com/Canaan-Creative/Avalon-USB-converter Source Code]&lt;br /&gt;
* [http://docs.lpcware.com/usbromlib/v1.0/ USBD ROM Stack]&lt;br /&gt;
* [http://www.nxp.com/documents/user_manual/UM10462.pdf LPC11U1X User Manual]&lt;br /&gt;
* [http://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc11xx-packages-0 LPCOpen sourcecode]&lt;br /&gt;
* [http://docs.lpcware.com/lpcopen/v1.03/ LPCOpen docs]&lt;br /&gt;
* [http://www.lpcware.com/system/files/LPCXpressoLPC11U14revA_0.pdf LPC11U14 Rev A Schematic]&lt;br /&gt;
* [http://www.nxp.com/documents/errata_sheet/ES_LPC11U1X.pdf Errata sheet LPC11U1x]&lt;br /&gt;
* [http://support.code-red-tech.com/CodeRedWiki/UsingGDB?highlight=%28LPC\-Link%29 Using command line GDB]&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59887</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59887"/>
		<updated>2016-01-08T04:09:35Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* How To Jump To Application Program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
=== Avalon6 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUC2 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
==== Support USB-DFU Mode ====&lt;br /&gt;
 We can use dfu-util under Ubuntu 14.04 or later updata new firmware for AUC2.&lt;br /&gt;
&lt;br /&gt;
==== Using USB-DFU Protocol ====&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Device Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
!Offset!!Field!!Size!!Value!!Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 12h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 01h || DEVICE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bcdUSB || 2 || 0100h || USB specification release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bDeviceClass || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bDeviceSubClass || 1 || 00h || See interface&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bDeviceProtocol || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bMaxPacketSize0 || 1 || 8,16,32,64 || Maximum packet size for endpoint.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || idVendor || 2 || ID || Vendor ID. Assigned by the USB-IF.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || idProduct || 2 || ID || Product ID. Assigned by manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || bcdDevice || 2 || BCD || Device release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 14 || iManufacturer || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 15 || iProduct || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || iSerialNumber || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || bNumConfigurations || 1 || 01h || One configuration only for DFU. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 01h || Runtime protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Functional Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 21h || DFU FUNCTIONAL descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bmAttributes || 1 || Bit mask || DFU attributes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 7……4: reserved&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 3: device will perform a bus detach-attach sequence when it receives a DFU_DETACH request. The host must not issue a USB Reset. (bitWillDetach)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 2: device is able to communicate via USB afeter Manifestation phase.(bitManifestationTolerant)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no, must see bus reset&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit1: upload capable(bitCanUpload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit0: download capable(bitCanDnload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || wDetachTimeOut || 2 || Number || Time,in milliseconds, that the device will wait after receipt of the DFU_DETACH request. if this time elapses without a USB reaset, then the device will terminate the Reconfiguration phase and revert back to normal operation . This repreents the maximum time that the device can wait(depending on its timers, etc.).The host may specify a shorter timeout in the DFU_DETACH request.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || wTransferSize || 2 || Number || Maximum number of bytes that the device can accept per control-write transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bcdDFUVersion || 2 || BCD || Numeric expression identifying the version of the DFU Specification release.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Mode Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 02h || DFU mode protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== USB-DFU Product&#039;s USB Descriptor ====&lt;br /&gt;
[[File:USB-DFU Descriptor.png]]&lt;br /&gt;
&lt;br /&gt;
==== DFU Updata Process Diagram ====&lt;br /&gt;
[[File:UpdataProcess.png]]&lt;br /&gt;
&lt;br /&gt;
==== Judge Updating Program Or Application Program ====&lt;br /&gt;
 I used a updata flag which is a four bytes word and is writed at fixd flash address (0x8000 - 4)&lt;br /&gt;
&lt;br /&gt;
 The flag&#039;s value is 0xAABBCCDD&lt;br /&gt;
&lt;br /&gt;
 When the bootloader program run, first it judge the updata flag, if the updata falg is not equal 0xAABBCCDD, it will jump to application program.&lt;br /&gt;
 Otherwise it will run to updata program.&lt;br /&gt;
&lt;br /&gt;
==== Jump To Application Program ====&lt;br /&gt;
 When we don&#039;t want to updata application program, the bootloader program should run to application program.&lt;br /&gt;
&lt;br /&gt;
 In order to achieve this goal, we can add under code in your bootloader program.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4000&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4000 is my application program&#039;s MSP point, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov sp, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4004&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4004 is my application program reset-function entry address, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov pc, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modify dfu-util For Ubuntu 14.04 ====&lt;br /&gt;
 #Inside your home directory, download dfu-util&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.openezx.org/dfu-util.git&lt;br /&gt;
&lt;br /&gt;
 open dfu-util/src/dfu_load.c&lt;br /&gt;
&lt;br /&gt;
 add this instruction &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&lt;br /&gt;
&lt;br /&gt;
 cd dfu-util&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
 The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
=== References And Links ===&lt;br /&gt;
* [https://www.lpcware.com/lpcxpresso/download LPCXpress IDE Download]&lt;br /&gt;
* [http://www.usb.org/developers/docs/devclass_docs/DFU_1.1.pdf See More About DFU Protocol]&lt;br /&gt;
* [https://github.com/Canaan-Creative/Avalon-USB-converter Source Code]&lt;br /&gt;
* [http://docs.lpcware.com/usbromlib/v1.0/ USBD ROM Stack]&lt;br /&gt;
* [http://www.nxp.com/documents/user_manual/UM10462.pdf LPC11U1X User Manual]&lt;br /&gt;
* [http://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc11xx-packages-0 LPCOpen sourcecode]&lt;br /&gt;
* [http://docs.lpcware.com/lpcopen/v1.03/ LPCOpen docs]&lt;br /&gt;
* [http://www.lpcware.com/system/files/LPCXpressoLPC11U14revA_0.pdf LPC11U14 Rev A Schematic]&lt;br /&gt;
* [http://www.nxp.com/documents/errata_sheet/ES_LPC11U1X.pdf Errata sheet LPC11U1x]&lt;br /&gt;
* [http://support.code-red-tech.com/CodeRedWiki/UsingGDB?highlight=%28LPC\-Link%29 Using command line GDB]&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59886</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59886"/>
		<updated>2016-01-08T04:09:08Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* How To Judge The Bootloader Program Is Updating Or Jump To Application Program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
=== Avalon6 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUC2 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
==== Support USB-DFU Mode ====&lt;br /&gt;
 We can use dfu-util under Ubuntu 14.04 or later updata new firmware for AUC2.&lt;br /&gt;
&lt;br /&gt;
==== Using USB-DFU Protocol ====&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Device Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
!Offset!!Field!!Size!!Value!!Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 12h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 01h || DEVICE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bcdUSB || 2 || 0100h || USB specification release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bDeviceClass || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bDeviceSubClass || 1 || 00h || See interface&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bDeviceProtocol || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bMaxPacketSize0 || 1 || 8,16,32,64 || Maximum packet size for endpoint.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || idVendor || 2 || ID || Vendor ID. Assigned by the USB-IF.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || idProduct || 2 || ID || Product ID. Assigned by manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || bcdDevice || 2 || BCD || Device release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 14 || iManufacturer || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 15 || iProduct || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || iSerialNumber || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || bNumConfigurations || 1 || 01h || One configuration only for DFU. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 01h || Runtime protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Functional Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 21h || DFU FUNCTIONAL descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bmAttributes || 1 || Bit mask || DFU attributes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 7……4: reserved&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 3: device will perform a bus detach-attach sequence when it receives a DFU_DETACH request. The host must not issue a USB Reset. (bitWillDetach)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 2: device is able to communicate via USB afeter Manifestation phase.(bitManifestationTolerant)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no, must see bus reset&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit1: upload capable(bitCanUpload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit0: download capable(bitCanDnload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || wDetachTimeOut || 2 || Number || Time,in milliseconds, that the device will wait after receipt of the DFU_DETACH request. if this time elapses without a USB reaset, then the device will terminate the Reconfiguration phase and revert back to normal operation . This repreents the maximum time that the device can wait(depending on its timers, etc.).The host may specify a shorter timeout in the DFU_DETACH request.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || wTransferSize || 2 || Number || Maximum number of bytes that the device can accept per control-write transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bcdDFUVersion || 2 || BCD || Numeric expression identifying the version of the DFU Specification release.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Mode Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 02h || DFU mode protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== USB-DFU Product&#039;s USB Descriptor ====&lt;br /&gt;
[[File:USB-DFU Descriptor.png]]&lt;br /&gt;
&lt;br /&gt;
==== DFU Updata Process Diagram ====&lt;br /&gt;
[[File:UpdataProcess.png]]&lt;br /&gt;
&lt;br /&gt;
==== Judge Updating Program Or Application Program ====&lt;br /&gt;
 I used a updata flag which is a four bytes word and is writed at fixd flash address (0x8000 - 4)&lt;br /&gt;
&lt;br /&gt;
 The flag&#039;s value is 0xAABBCCDD&lt;br /&gt;
&lt;br /&gt;
 When the bootloader program run, first it judge the updata flag, if the updata falg is not equal 0xAABBCCDD, it will jump to application program.&lt;br /&gt;
 Otherwise it will run to updata program.&lt;br /&gt;
&lt;br /&gt;
==== How To Jump To Application Program ====&lt;br /&gt;
 When we don&#039;t want to updata application program, the bootloader program should run to application program.&lt;br /&gt;
&lt;br /&gt;
 In order to achieve this goal, we can add under code in your bootloader program.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4000&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4000 is my application program&#039;s MSP point, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov sp, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4004&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4004 is my application program reset-function entry address, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov pc, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modify dfu-util For Ubuntu 14.04 ====&lt;br /&gt;
 #Inside your home directory, download dfu-util&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.openezx.org/dfu-util.git&lt;br /&gt;
&lt;br /&gt;
 open dfu-util/src/dfu_load.c&lt;br /&gt;
&lt;br /&gt;
 add this instruction &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&lt;br /&gt;
&lt;br /&gt;
 cd dfu-util&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
 The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
=== References And Links ===&lt;br /&gt;
* [https://www.lpcware.com/lpcxpresso/download LPCXpress IDE Download]&lt;br /&gt;
* [http://www.usb.org/developers/docs/devclass_docs/DFU_1.1.pdf See More About DFU Protocol]&lt;br /&gt;
* [https://github.com/Canaan-Creative/Avalon-USB-converter Source Code]&lt;br /&gt;
* [http://docs.lpcware.com/usbromlib/v1.0/ USBD ROM Stack]&lt;br /&gt;
* [http://www.nxp.com/documents/user_manual/UM10462.pdf LPC11U1X User Manual]&lt;br /&gt;
* [http://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc11xx-packages-0 LPCOpen sourcecode]&lt;br /&gt;
* [http://docs.lpcware.com/lpcopen/v1.03/ LPCOpen docs]&lt;br /&gt;
* [http://www.lpcware.com/system/files/LPCXpressoLPC11U14revA_0.pdf LPC11U14 Rev A Schematic]&lt;br /&gt;
* [http://www.nxp.com/documents/errata_sheet/ES_LPC11U1X.pdf Errata sheet LPC11U1x]&lt;br /&gt;
* [http://support.code-red-tech.com/CodeRedWiki/UsingGDB?highlight=%28LPC\-Link%29 Using command line GDB]&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59885</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59885"/>
		<updated>2016-01-08T04:06:22Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* Support USB-DFU Mode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
=== Avalon6 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUC2 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
==== Support USB-DFU Mode ====&lt;br /&gt;
 We can use dfu-util under Ubuntu 14.04 or later updata new firmware for AUC2.&lt;br /&gt;
&lt;br /&gt;
==== Using USB-DFU Protocol ====&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Device Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
!Offset!!Field!!Size!!Value!!Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 12h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 01h || DEVICE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bcdUSB || 2 || 0100h || USB specification release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bDeviceClass || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bDeviceSubClass || 1 || 00h || See interface&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bDeviceProtocol || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bMaxPacketSize0 || 1 || 8,16,32,64 || Maximum packet size for endpoint.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || idVendor || 2 || ID || Vendor ID. Assigned by the USB-IF.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || idProduct || 2 || ID || Product ID. Assigned by manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || bcdDevice || 2 || BCD || Device release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 14 || iManufacturer || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 15 || iProduct || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || iSerialNumber || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || bNumConfigurations || 1 || 01h || One configuration only for DFU. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 01h || Runtime protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Functional Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 21h || DFU FUNCTIONAL descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bmAttributes || 1 || Bit mask || DFU attributes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 7……4: reserved&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 3: device will perform a bus detach-attach sequence when it receives a DFU_DETACH request. The host must not issue a USB Reset. (bitWillDetach)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 2: device is able to communicate via USB afeter Manifestation phase.(bitManifestationTolerant)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no, must see bus reset&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit1: upload capable(bitCanUpload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit0: download capable(bitCanDnload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || wDetachTimeOut || 2 || Number || Time,in milliseconds, that the device will wait after receipt of the DFU_DETACH request. if this time elapses without a USB reaset, then the device will terminate the Reconfiguration phase and revert back to normal operation . This repreents the maximum time that the device can wait(depending on its timers, etc.).The host may specify a shorter timeout in the DFU_DETACH request.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || wTransferSize || 2 || Number || Maximum number of bytes that the device can accept per control-write transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bcdDFUVersion || 2 || BCD || Numeric expression identifying the version of the DFU Specification release.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Mode Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 02h || DFU mode protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== USB-DFU Product&#039;s USB Descriptor ====&lt;br /&gt;
[[File:USB-DFU Descriptor.png]]&lt;br /&gt;
&lt;br /&gt;
==== DFU Updata Process Diagram ====&lt;br /&gt;
[[File:UpdataProcess.png]]&lt;br /&gt;
&lt;br /&gt;
==== How To Judge The Bootloader Program Is Updating Or Jump To Application Program ====&lt;br /&gt;
 I used a updata flag which is a four bytes word and is writed at fixd flash address (0x8000 - 4)&lt;br /&gt;
&lt;br /&gt;
 The flag&#039;s value is 0xAABBCCDD&lt;br /&gt;
&lt;br /&gt;
 When the bootloader program run, first it judge the updata flag, if the updata falg is not equal 0xAABBCCDD, it will jump to application program.&lt;br /&gt;
 Otherwise it will run to updata program.&lt;br /&gt;
&lt;br /&gt;
==== How To Jump To Application Program ====&lt;br /&gt;
 When we don&#039;t want to updata application program, the bootloader program should run to application program.&lt;br /&gt;
&lt;br /&gt;
 In order to achieve this goal, we can add under code in your bootloader program.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4000&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4000 is my application program&#039;s MSP point, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov sp, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4004&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4004 is my application program reset-function entry address, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov pc, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modify dfu-util For Ubuntu 14.04 ====&lt;br /&gt;
 #Inside your home directory, download dfu-util&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.openezx.org/dfu-util.git&lt;br /&gt;
&lt;br /&gt;
 open dfu-util/src/dfu_load.c&lt;br /&gt;
&lt;br /&gt;
 add this instruction &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&lt;br /&gt;
&lt;br /&gt;
 cd dfu-util&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
 The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
=== References And Links ===&lt;br /&gt;
* [https://www.lpcware.com/lpcxpresso/download LPCXpress IDE Download]&lt;br /&gt;
* [http://www.usb.org/developers/docs/devclass_docs/DFU_1.1.pdf See More About DFU Protocol]&lt;br /&gt;
* [https://github.com/Canaan-Creative/Avalon-USB-converter Source Code]&lt;br /&gt;
* [http://docs.lpcware.com/usbromlib/v1.0/ USBD ROM Stack]&lt;br /&gt;
* [http://www.nxp.com/documents/user_manual/UM10462.pdf LPC11U1X User Manual]&lt;br /&gt;
* [http://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc11xx-packages-0 LPCOpen sourcecode]&lt;br /&gt;
* [http://docs.lpcware.com/lpcopen/v1.03/ LPCOpen docs]&lt;br /&gt;
* [http://www.lpcware.com/system/files/LPCXpressoLPC11U14revA_0.pdf LPC11U14 Rev A Schematic]&lt;br /&gt;
* [http://www.nxp.com/documents/errata_sheet/ES_LPC11U1X.pdf Errata sheet LPC11U1x]&lt;br /&gt;
* [http://support.code-red-tech.com/CodeRedWiki/UsingGDB?highlight=%28LPC\-Link%29 Using command line GDB]&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59884</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59884"/>
		<updated>2016-01-08T04:04:10Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
=== Avalon6 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUC2 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
==== Support USB-DFU Mode ====&lt;br /&gt;
==== Using USB-DFU Protocol ====&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Device Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
!Offset!!Field!!Size!!Value!!Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 12h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 01h || DEVICE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bcdUSB || 2 || 0100h || USB specification release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bDeviceClass || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bDeviceSubClass || 1 || 00h || See interface&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bDeviceProtocol || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bMaxPacketSize0 || 1 || 8,16,32,64 || Maximum packet size for endpoint.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || idVendor || 2 || ID || Vendor ID. Assigned by the USB-IF.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || idProduct || 2 || ID || Product ID. Assigned by manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || bcdDevice || 2 || BCD || Device release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 14 || iManufacturer || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 15 || iProduct || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || iSerialNumber || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || bNumConfigurations || 1 || 01h || One configuration only for DFU. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 01h || Runtime protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Functional Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 21h || DFU FUNCTIONAL descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bmAttributes || 1 || Bit mask || DFU attributes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 7……4: reserved&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 3: device will perform a bus detach-attach sequence when it receives a DFU_DETACH request. The host must not issue a USB Reset. (bitWillDetach)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 2: device is able to communicate via USB afeter Manifestation phase.(bitManifestationTolerant)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no, must see bus reset&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit1: upload capable(bitCanUpload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit0: download capable(bitCanDnload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || wDetachTimeOut || 2 || Number || Time,in milliseconds, that the device will wait after receipt of the DFU_DETACH request. if this time elapses without a USB reaset, then the device will terminate the Reconfiguration phase and revert back to normal operation . This repreents the maximum time that the device can wait(depending on its timers, etc.).The host may specify a shorter timeout in the DFU_DETACH request.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || wTransferSize || 2 || Number || Maximum number of bytes that the device can accept per control-write transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bcdDFUVersion || 2 || BCD || Numeric expression identifying the version of the DFU Specification release.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Mode Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 02h || DFU mode protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== USB-DFU Product&#039;s USB Descriptor ====&lt;br /&gt;
[[File:USB-DFU Descriptor.png]]&lt;br /&gt;
&lt;br /&gt;
==== DFU Updata Process Diagram ====&lt;br /&gt;
[[File:UpdataProcess.png]]&lt;br /&gt;
&lt;br /&gt;
==== How To Judge The Bootloader Program Is Updating Or Jump To Application Program ====&lt;br /&gt;
 I used a updata flag which is a four bytes word and is writed at fixd flash address (0x8000 - 4)&lt;br /&gt;
&lt;br /&gt;
 The flag&#039;s value is 0xAABBCCDD&lt;br /&gt;
&lt;br /&gt;
 When the bootloader program run, first it judge the updata flag, if the updata falg is not equal 0xAABBCCDD, it will jump to application program.&lt;br /&gt;
 Otherwise it will run to updata program.&lt;br /&gt;
&lt;br /&gt;
==== How To Jump To Application Program ====&lt;br /&gt;
 When we don&#039;t want to updata application program, the bootloader program should run to application program.&lt;br /&gt;
&lt;br /&gt;
 In order to achieve this goal, we can add under code in your bootloader program.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4000&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4000 is my application program&#039;s MSP point, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov sp, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4004&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4004 is my application program reset-function entry address, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov pc, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modify dfu-util For Ubuntu 14.04 ====&lt;br /&gt;
 #Inside your home directory, download dfu-util&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.openezx.org/dfu-util.git&lt;br /&gt;
&lt;br /&gt;
 open dfu-util/src/dfu_load.c&lt;br /&gt;
&lt;br /&gt;
 add this instruction &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&lt;br /&gt;
&lt;br /&gt;
 cd dfu-util&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
 The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
=== References And Links ===&lt;br /&gt;
* [https://www.lpcware.com/lpcxpresso/download LPCXpress IDE Download]&lt;br /&gt;
* [http://www.usb.org/developers/docs/devclass_docs/DFU_1.1.pdf See More About DFU Protocol]&lt;br /&gt;
* [https://github.com/Canaan-Creative/Avalon-USB-converter Source Code]&lt;br /&gt;
* [http://docs.lpcware.com/usbromlib/v1.0/ USBD ROM Stack]&lt;br /&gt;
* [http://www.nxp.com/documents/user_manual/UM10462.pdf LPC11U1X User Manual]&lt;br /&gt;
* [http://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc11xx-packages-0 LPCOpen sourcecode]&lt;br /&gt;
* [http://docs.lpcware.com/lpcopen/v1.03/ LPCOpen docs]&lt;br /&gt;
* [http://www.lpcware.com/system/files/LPCXpressoLPC11U14revA_0.pdf LPC11U14 Rev A Schematic]&lt;br /&gt;
* [http://www.nxp.com/documents/errata_sheet/ES_LPC11U1X.pdf Errata sheet LPC11U1x]&lt;br /&gt;
* [http://support.code-red-tech.com/CodeRedWiki/UsingGDB?highlight=%28LPC\-Link%29 Using command line GDB]&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59883</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59883"/>
		<updated>2016-01-08T03:59:55Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
=== Avalon6 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUC2 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
==== Support USB-DFU Mode ====&lt;br /&gt;
==== Using USB-DFU Protocol ====&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Device Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
!Offset!!Field!!Size!!Value!!Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 12h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 01h || DEVICE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bcdUSB || 2 || 0100h || USB specification release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bDeviceClass || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bDeviceSubClass || 1 || 00h || See interface&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bDeviceProtocol || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bMaxPacketSize0 || 1 || 8,16,32,64 || Maximum packet size for endpoint.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || idVendor || 2 || ID || Vendor ID. Assigned by the USB-IF.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || idProduct || 2 || ID || Product ID. Assigned by manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || bcdDevice || 2 || BCD || Device release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 14 || iManufacturer || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 15 || iProduct || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || iSerialNumber || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || bNumConfigurations || 1 || 01h || One configuration only for DFU. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 01h || Runtime protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Functional Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 21h || DFU FUNCTIONAL descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bmAttributes || 1 || Bit mask || DFU attributes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 7……4: reserved&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 3: device will perform a bus detach-attach sequence when it receives a DFU_DETACH request. The host must not issue a USB Reset. (bitWillDetach)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 2: device is able to communicate via USB afeter Manifestation phase.(bitManifestationTolerant)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no, must see bus reset&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit1: upload capable(bitCanUpload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit0: download capable(bitCanDnload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || wDetachTimeOut || 2 || Number || Time,in milliseconds, that the device will wait after receipt of the DFU_DETACH request. if this time elapses without a USB reaset, then the device will terminate the Reconfiguration phase and revert back to normal operation . This repreents the maximum time that the device can wait(depending on its timers, etc.).The host may specify a shorter timeout in the DFU_DETACH request.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || wTransferSize || 2 || Number || Maximum number of bytes that the device can accept per control-write transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bcdDFUVersion || 2 || BCD || Numeric expression identifying the version of the DFU Specification release.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Mode Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 02h || DFU mode protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== USB-DFU Product&#039;s USB Descriptor ====&lt;br /&gt;
[[File:USB-DFU Descriptor.png]]&lt;br /&gt;
&lt;br /&gt;
==== DFU Updata Process Diagram ====&lt;br /&gt;
[[File:UpdataProcess.png]]&lt;br /&gt;
&lt;br /&gt;
==== How To Judge The Bootloader Program Is Updating Or Jump To Application Program ====&lt;br /&gt;
 I used a updata flag which is a four bytes word and is writed at fixd flash address (0x8000 - 4)&lt;br /&gt;
&lt;br /&gt;
 The flag&#039;s value is 0xAABBCCDD&lt;br /&gt;
&lt;br /&gt;
 When the bootloader program run, first it judge the updata flag, if the updata falg is not equal 0xAABBCCDD, it will jump to application program.&lt;br /&gt;
 Otherwise it will run to updata program.&lt;br /&gt;
&lt;br /&gt;
==== How To Jump To Application Program ====&lt;br /&gt;
 When we don&#039;t want to updata application program, the bootloader program should run to application program.&lt;br /&gt;
&lt;br /&gt;
 In order to achieve this goal, we can add under code in your bootloader program.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4000&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4000 is my application program&#039;s MSP point, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov sp, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4004&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4004 is my application program reset-function entry address, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov pc, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modify dfu-util For Ubuntu 14.04 ====&lt;br /&gt;
 #Inside your home directory, download dfu-util&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.openezx.org/dfu-util.git&lt;br /&gt;
&lt;br /&gt;
 open dfu-util/src/dfu_load.c&lt;br /&gt;
&lt;br /&gt;
 add this instruction &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&lt;br /&gt;
&lt;br /&gt;
 cd dfu-util&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
 The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
=== Links ===&lt;br /&gt;
* [http://www.usb.org/developers/docs/devclass_docs/DFU_1.1.pdf See More About DFU Protocol]&lt;br /&gt;
* [https://github.com/Canaan-Creative/Avalon-USB-converter Source Code]&lt;br /&gt;
* [http://docs.lpcware.com/usbromlib/v1.0/ USBD ROM Stack]&lt;br /&gt;
* [http://www.nxp.com/documents/user_manual/UM10462.pdf LPC11U1X User Manual]&lt;br /&gt;
* [http://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc11xx-packages-0 LPCOpen sourcecode]&lt;br /&gt;
* [http://docs.lpcware.com/lpcopen/v1.03/ LPCOpen docs]&lt;br /&gt;
* [http://www.lpcware.com/system/files/LPCXpressoLPC11U14revA_0.pdf LPC11U14 Rev A Schematic]&lt;br /&gt;
* [http://www.nxp.com/documents/errata_sheet/ES_LPC11U1X.pdf Errata sheet LPC11U1x]&lt;br /&gt;
* [http://support.code-red-tech.com/CodeRedWiki/UsingGDB?highlight=%28LPC\-Link%29 Using command line GDB]&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59882</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59882"/>
		<updated>2016-01-08T03:49:54Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* USB Bootloader */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
=== Avalon6 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUC2 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
==== Support USB-DFU Mode ====&lt;br /&gt;
==== Using USB-DFU Protocol ====&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Device Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
!Offset!!Field!!Size!!Value!!Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 12h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 01h || DEVICE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bcdUSB || 2 || 0100h || USB specification release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bDeviceClass || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bDeviceSubClass || 1 || 00h || See interface&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bDeviceProtocol || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bMaxPacketSize0 || 1 || 8,16,32,64 || Maximum packet size for endpoint.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || idVendor || 2 || ID || Vendor ID. Assigned by the USB-IF.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || idProduct || 2 || ID || Product ID. Assigned by manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || bcdDevice || 2 || BCD || Device release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 14 || iManufacturer || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 15 || iProduct || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || iSerialNumber || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || bNumConfigurations || 1 || 01h || One configuration only for DFU. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 01h || Runtime protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Functional Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 21h || DFU FUNCTIONAL descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bmAttributes || 1 || Bit mask || DFU attributes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 7……4: reserved&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 3: device will perform a bus detach-attach sequence when it receives a DFU_DETACH request. The host must not issue a USB Reset. (bitWillDetach)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 2: device is able to communicate via USB afeter Manifestation phase.(bitManifestationTolerant)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no, must see bus reset&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit1: upload capable(bitCanUpload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit0: download capable(bitCanDnload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || wDetachTimeOut || 2 || Number || Time,in milliseconds, that the device will wait after receipt of the DFU_DETACH request. if this time elapses without a USB reaset, then the device will terminate the Reconfiguration phase and revert back to normal operation . This repreents the maximum time that the device can wait(depending on its timers, etc.).The host may specify a shorter timeout in the DFU_DETACH request.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || wTransferSize || 2 || Number || Maximum number of bytes that the device can accept per control-write transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bcdDFUVersion || 2 || BCD || Numeric expression identifying the version of the DFU Specification release.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Mode Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 02h || DFU mode protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== USB-DFU Product&#039;s USB Descriptor ====&lt;br /&gt;
[[File:USB-DFU Descriptor.png]]&lt;br /&gt;
&lt;br /&gt;
==== DFU Updata Process Diagram ====&lt;br /&gt;
[[File:UpdataProcess.png]]&lt;br /&gt;
&lt;br /&gt;
==== How To Judge The Bootloader Program Is Updating Or Jump To Application Program ====&lt;br /&gt;
 I used a updata flag which is a four bytes word and is writed at fixd flash address (0x8000 - 4)&lt;br /&gt;
&lt;br /&gt;
 The flag&#039;s value is 0xAABBCCDD&lt;br /&gt;
&lt;br /&gt;
 When the bootloader program run, first it judge the updata flag, if the updata falg is not equal 0xAABBCCDD, it will jump to application program.&lt;br /&gt;
 Otherwise it will run to updata program.&lt;br /&gt;
&lt;br /&gt;
==== How To Jump To Application Program ====&lt;br /&gt;
 When we don&#039;t want to updata application program, the bootloader program should run to application program.&lt;br /&gt;
&lt;br /&gt;
 In order to achieve this goal, we can add under code in your bootloader program.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4000&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4000 is my application program&#039;s MSP point, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov sp, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4004&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4004 is my application program reset-function entry address, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov pc, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modify dfu-util For Ubuntu 14.04 ====&lt;br /&gt;
 #Inside your home directory, download dfu-util&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.openezx.org/dfu-util.git&lt;br /&gt;
&lt;br /&gt;
 open dfu-util/src/dfu_load.c&lt;br /&gt;
&lt;br /&gt;
 add this instruction &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&lt;br /&gt;
&lt;br /&gt;
 cd dfu-util&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
 The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
==== Links ====&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59881</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59881"/>
		<updated>2016-01-08T03:48:37Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* USB Bootloader */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
=== Avalon6 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUC2 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
==== Support USB-DFU Mode ====&lt;br /&gt;
==== Using USB-DFU Protocol ====&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Device Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
!Offset!!Field!!Size!!Value!!Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 12h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 01h || DEVICE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bcdUSB || 2 || 0100h || USB specification release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bDeviceClass || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bDeviceSubClass || 1 || 00h || See interface&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bDeviceProtocol || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bMaxPacketSize0 || 1 || 8,16,32,64 || Maximum packet size for endpoint.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || idVendor || 2 || ID || Vendor ID. Assigned by the USB-IF.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || idProduct || 2 || ID || Product ID. Assigned by manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || bcdDevice || 2 || BCD || Device release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 14 || iManufacturer || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 15 || iProduct || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || iSerialNumber || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || bNumConfigurations || 1 || 01h || One configuration only for DFU. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 01h || Runtime protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Functional Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 21h || DFU FUNCTIONAL descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bmAttributes || 1 || Bit mask || DFU attributes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 7……4: reserved&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 3: device will perform a bus detach-attach sequence when it receives a DFU_DETACH request. The host must not issue a USB Reset. (bitWillDetach)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 2: device is able to communicate via USB afeter Manifestation phase.(bitManifestationTolerant)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no, must see bus reset&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit1: upload capable(bitCanUpload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit0: download capable(bitCanDnload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || wDetachTimeOut || 2 || Number || Time,in milliseconds, that the device will wait after receipt of the DFU_DETACH request. if this time elapses without a USB reaset, then the device will terminate the Reconfiguration phase and revert back to normal operation . This repreents the maximum time that the device can wait(depending on its timers, etc.).The host may specify a shorter timeout in the DFU_DETACH request.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || wTransferSize || 2 || Number || Maximum number of bytes that the device can accept per control-write transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bcdDFUVersion || 2 || BCD || Numeric expression identifying the version of the DFU Specification release.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Mode Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 02h || DFU mode protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== USB-DFU Product&#039;s USB Descriptor ====&lt;br /&gt;
[[File:USB-DFU Descriptor.png]]&lt;br /&gt;
&lt;br /&gt;
==== DFU Updata Process Diagram ====&lt;br /&gt;
[[File:UpdataProcess.png]]&lt;br /&gt;
&lt;br /&gt;
==== How To Judge The Bootloader Program Is Updating Or Jump To Application Program ====&lt;br /&gt;
 I used a updata flag which is a four bytes word and is writed at fixd flash address (0x8000 - 4)&lt;br /&gt;
&lt;br /&gt;
 The flag&#039;s value is 0xAABBCCDD&lt;br /&gt;
&lt;br /&gt;
 When the bootloader program run, first it judge the updata flag, if the updata falg is not equal 0xAABBCCDD, it will jump to application program.&lt;br /&gt;
 Otherwise it will run to updata program.&lt;br /&gt;
&lt;br /&gt;
==== How To Jump To Application Program ====&lt;br /&gt;
 When we don&#039;t want to updata application program, the bootloader program should run to application program.&lt;br /&gt;
&lt;br /&gt;
 In order to achieve this goal, we can add under code in your bootloader program.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4000&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4000 is my application program&#039;s MSP point, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov sp, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4004&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4004 is my application program reset-function entry address, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov pc, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modify dfu-util For Ubuntu 14.04 ====&lt;br /&gt;
 #Inside your home directory, download dfu-util&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.openezx.org/dfu-util.git&lt;br /&gt;
&lt;br /&gt;
 open dfu-util/src/dfu_load.c&lt;br /&gt;
&lt;br /&gt;
 add this instruction &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&lt;br /&gt;
&lt;br /&gt;
 cd dfu-util&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
 The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
#Links&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59880</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59880"/>
		<updated>2016-01-08T03:45:30Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* How To Jump To Application Program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
=== Avalon6 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUC2 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
==== Support USB-DFU Mode ====&lt;br /&gt;
==== Using USB-DFU Protocol ====&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Device Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
!Offset!!Field!!Size!!Value!!Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 12h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 01h || DEVICE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bcdUSB || 2 || 0100h || USB specification release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bDeviceClass || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bDeviceSubClass || 1 || 00h || See interface&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bDeviceProtocol || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bMaxPacketSize0 || 1 || 8,16,32,64 || Maximum packet size for endpoint.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || idVendor || 2 || ID || Vendor ID. Assigned by the USB-IF.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || idProduct || 2 || ID || Product ID. Assigned by manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || bcdDevice || 2 || BCD || Device release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 14 || iManufacturer || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 15 || iProduct || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || iSerialNumber || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || bNumConfigurations || 1 || 01h || One configuration only for DFU. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 01h || Runtime protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Functional Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 21h || DFU FUNCTIONAL descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bmAttributes || 1 || Bit mask || DFU attributes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 7……4: reserved&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 3: device will perform a bus detach-attach sequence when it receives a DFU_DETACH request. The host must not issue a USB Reset. (bitWillDetach)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 2: device is able to communicate via USB afeter Manifestation phase.(bitManifestationTolerant)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no, must see bus reset&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit1: upload capable(bitCanUpload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit0: download capable(bitCanDnload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || wDetachTimeOut || 2 || Number || Time,in milliseconds, that the device will wait after receipt of the DFU_DETACH request. if this time elapses without a USB reaset, then the device will terminate the Reconfiguration phase and revert back to normal operation . This repreents the maximum time that the device can wait(depending on its timers, etc.).The host may specify a shorter timeout in the DFU_DETACH request.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || wTransferSize || 2 || Number || Maximum number of bytes that the device can accept per control-write transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bcdDFUVersion || 2 || BCD || Numeric expression identifying the version of the DFU Specification release.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Mode Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 02h || DFU mode protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== USB-DFU Product&#039;s USB Descriptor ====&lt;br /&gt;
[[File:USB-DFU Descriptor.png]]&lt;br /&gt;
&lt;br /&gt;
==== DFU Updata Process Diagram ====&lt;br /&gt;
[[File:UpdataProcess.png]]&lt;br /&gt;
&lt;br /&gt;
==== How To Judge The Bootloader Program Is Updating Or Jump To Application Program ====&lt;br /&gt;
 I used a updata flag which is a four bytes word and is writed at fixd flash address (0x8000 - 4)&lt;br /&gt;
&lt;br /&gt;
 The flag&#039;s value is 0xAABBCCDD&lt;br /&gt;
&lt;br /&gt;
 When the bootloader program run, first it judge the updata flag, if the updata falg is not equal 0xAABBCCDD, it will jump to application program.&lt;br /&gt;
 Otherwise it will run to updata program.&lt;br /&gt;
&lt;br /&gt;
==== How To Jump To Application Program ====&lt;br /&gt;
 When we don&#039;t want to updata application program, the bootloader program should run to application program.&lt;br /&gt;
&lt;br /&gt;
 In order to achieve this goal, we can add under code in your bootloader program.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4000&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4000 is my application program&#039;s MSP point, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov sp, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4004&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4004 is my application program reset-function entry address, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;asm volatile(&amp;quot;mov pc, r0&amp;quot;);&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modify dfu-util For Ubuntu 14.04 ====&lt;br /&gt;
&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:USB-DFU_Descriptor.png USB-DFU Product&#039;s USB Descriptor]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:UpdataProcess.png DFU Updata Process Diagram]&lt;br /&gt;
#[[How To Judge The Bootloader Program Is Updating Or Jump To Application Program]]&lt;br /&gt;
#[[How To Jump To Application Program]]&lt;br /&gt;
#[[Modify dfu-util For Ubuntu 14.04]]&lt;br /&gt;
#Links&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59879</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59879"/>
		<updated>2016-01-08T03:41:54Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* How To Judge The Bootloader Program Is Updating Or Jump To Application Program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
=== Avalon6 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUC2 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
==== Support USB-DFU Mode ====&lt;br /&gt;
==== Using USB-DFU Protocol ====&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Device Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
!Offset!!Field!!Size!!Value!!Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 12h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 01h || DEVICE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bcdUSB || 2 || 0100h || USB specification release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bDeviceClass || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bDeviceSubClass || 1 || 00h || See interface&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bDeviceProtocol || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bMaxPacketSize0 || 1 || 8,16,32,64 || Maximum packet size for endpoint.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || idVendor || 2 || ID || Vendor ID. Assigned by the USB-IF.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || idProduct || 2 || ID || Product ID. Assigned by manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || bcdDevice || 2 || BCD || Device release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 14 || iManufacturer || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 15 || iProduct || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || iSerialNumber || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || bNumConfigurations || 1 || 01h || One configuration only for DFU. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 01h || Runtime protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Functional Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 21h || DFU FUNCTIONAL descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bmAttributes || 1 || Bit mask || DFU attributes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 7……4: reserved&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 3: device will perform a bus detach-attach sequence when it receives a DFU_DETACH request. The host must not issue a USB Reset. (bitWillDetach)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 2: device is able to communicate via USB afeter Manifestation phase.(bitManifestationTolerant)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no, must see bus reset&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit1: upload capable(bitCanUpload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit0: download capable(bitCanDnload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || wDetachTimeOut || 2 || Number || Time,in milliseconds, that the device will wait after receipt of the DFU_DETACH request. if this time elapses without a USB reaset, then the device will terminate the Reconfiguration phase and revert back to normal operation . This repreents the maximum time that the device can wait(depending on its timers, etc.).The host may specify a shorter timeout in the DFU_DETACH request.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || wTransferSize || 2 || Number || Maximum number of bytes that the device can accept per control-write transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bcdDFUVersion || 2 || BCD || Numeric expression identifying the version of the DFU Specification release.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Mode Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 02h || DFU mode protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== USB-DFU Product&#039;s USB Descriptor ====&lt;br /&gt;
[[File:USB-DFU Descriptor.png]]&lt;br /&gt;
&lt;br /&gt;
==== DFU Updata Process Diagram ====&lt;br /&gt;
[[File:UpdataProcess.png]]&lt;br /&gt;
&lt;br /&gt;
==== How To Judge The Bootloader Program Is Updating Or Jump To Application Program ====&lt;br /&gt;
 I used a updata flag which is a four bytes word and is writed at fixd flash address (0x8000 - 4)&lt;br /&gt;
&lt;br /&gt;
 The flag&#039;s value is 0xAABBCCDD&lt;br /&gt;
&lt;br /&gt;
 When the bootloader program run, first it judge the updata flag, if the updata falg is not equal 0xAABBCCDD, it will jump to application program.&lt;br /&gt;
 Otherwise it will run to updata program.&lt;br /&gt;
&lt;br /&gt;
==== How To Jump To Application Program ====&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;When we don&#039;t want to updata application program,&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;the bootloader program should run to application program.&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;In order to achieve this goal, we can add under code in your bootloader program.&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4000&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4000 is my application program&#039;s MSP point, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;   &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;asm volatile(&amp;quot;mov sp, r0&amp;quot;);&amp;lt;/font&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4004&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4004 is my application program reset-function entry address, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;asm volatile(&amp;quot;mov pc, r0&amp;quot;);&amp;lt;/font&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modify dfu-util For Ubuntu 14.04 ====&lt;br /&gt;
&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:USB-DFU_Descriptor.png USB-DFU Product&#039;s USB Descriptor]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:UpdataProcess.png DFU Updata Process Diagram]&lt;br /&gt;
#[[How To Judge The Bootloader Program Is Updating Or Jump To Application Program]]&lt;br /&gt;
#[[How To Jump To Application Program]]&lt;br /&gt;
#[[Modify dfu-util For Ubuntu 14.04]]&lt;br /&gt;
#Links&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59878</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59878"/>
		<updated>2016-01-08T03:39:15Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* USB Bootloader */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
=== Avalon6 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUC2 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
==== Support USB-DFU Mode ====&lt;br /&gt;
==== Using USB-DFU Protocol ====&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Device Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
!Offset!!Field!!Size!!Value!!Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 12h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 01h || DEVICE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bcdUSB || 2 || 0100h || USB specification release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bDeviceClass || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bDeviceSubClass || 1 || 00h || See interface&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bDeviceProtocol || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bMaxPacketSize0 || 1 || 8,16,32,64 || Maximum packet size for endpoint.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || idVendor || 2 || ID || Vendor ID. Assigned by the USB-IF.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || idProduct || 2 || ID || Product ID. Assigned by manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || bcdDevice || 2 || BCD || Device release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 14 || iManufacturer || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 15 || iProduct || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || iSerialNumber || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || bNumConfigurations || 1 || 01h || One configuration only for DFU. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 01h || Runtime protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Functional Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 21h || DFU FUNCTIONAL descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bmAttributes || 1 || Bit mask || DFU attributes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 7……4: reserved&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 3: device will perform a bus detach-attach sequence when it receives a DFU_DETACH request. The host must not issue a USB Reset. (bitWillDetach)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 2: device is able to communicate via USB afeter Manifestation phase.(bitManifestationTolerant)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no, must see bus reset&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit1: upload capable(bitCanUpload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit0: download capable(bitCanDnload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || wDetachTimeOut || 2 || Number || Time,in milliseconds, that the device will wait after receipt of the DFU_DETACH request. if this time elapses without a USB reaset, then the device will terminate the Reconfiguration phase and revert back to normal operation . This repreents the maximum time that the device can wait(depending on its timers, etc.).The host may specify a shorter timeout in the DFU_DETACH request.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || wTransferSize || 2 || Number || Maximum number of bytes that the device can accept per control-write transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bcdDFUVersion || 2 || BCD || Numeric expression identifying the version of the DFU Specification release.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Mode Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 02h || DFU mode protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== USB-DFU Product&#039;s USB Descriptor ====&lt;br /&gt;
[[File:USB-DFU Descriptor.png]]&lt;br /&gt;
&lt;br /&gt;
==== DFU Updata Process Diagram ====&lt;br /&gt;
[[File:UpdataProcess.png]]&lt;br /&gt;
&lt;br /&gt;
==== How To Judge The Bootloader Program Is Updating Or Jump To Application Program ====&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;I used a updata flag which is a four bytes word and &lt;br /&gt;
is writed at fixd flash address (0x8000 - 4)&lt;br /&gt;
&lt;br /&gt;
The flag&#039;s value is 0xAABBCCDD&lt;br /&gt;
&lt;br /&gt;
When the bootloader program run, first it judge the updata flag,&lt;br /&gt;
if the updata falg is not equal 0xAABBCCDD,&amp;lt;br /&amp;gt;&lt;br /&gt;
it will jump to application program.&lt;br /&gt;
otherwise it will run to updata program.&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How To Jump To Application Program ====&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;When we don&#039;t want to updata application program,&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;the bootloader program should run to application program.&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;In order to achieve this goal, we can add under code in your bootloader program.&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4000&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4000 is my application program&#039;s MSP point, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;   &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;asm volatile(&amp;quot;mov sp, r0&amp;quot;);&amp;lt;/font&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4004&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4004 is my application program reset-function entry address, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;asm volatile(&amp;quot;mov pc, r0&amp;quot;);&amp;lt;/font&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Modify dfu-util For Ubuntu 14.04 ====&lt;br /&gt;
&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:USB-DFU_Descriptor.png USB-DFU Product&#039;s USB Descriptor]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:UpdataProcess.png DFU Updata Process Diagram]&lt;br /&gt;
#[[How To Judge The Bootloader Program Is Updating Or Jump To Application Program]]&lt;br /&gt;
#[[How To Jump To Application Program]]&lt;br /&gt;
#[[Modify dfu-util For Ubuntu 14.04]]&lt;br /&gt;
#Links&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59877</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59877"/>
		<updated>2016-01-08T03:30:36Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* Using USB-DFU Protocol */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
=== Avalon6 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUC2 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
==== Support USB-DFU Mode ====&lt;br /&gt;
==== Using USB-DFU Protocol ====&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Device Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
!Offset!!Field!!Size!!Value!!Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 12h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 01h || DEVICE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bcdUSB || 2 || 0100h || USB specification release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bDeviceClass || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bDeviceSubClass || 1 || 00h || See interface&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bDeviceProtocol || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bMaxPacketSize0 || 1 || 8,16,32,64 || Maximum packet size for endpoint.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || idVendor || 2 || ID || Vendor ID. Assigned by the USB-IF.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || idProduct || 2 || ID || Product ID. Assigned by manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || bcdDevice || 2 || BCD || Device release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 14 || iManufacturer || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 15 || iProduct || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || iSerialNumber || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || bNumConfigurations || 1 || 01h || One configuration only for DFU. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 01h || Runtime protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Functional Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 21h || DFU FUNCTIONAL descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bmAttributes || 1 || Bit mask || DFU attributes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 7……4: reserved&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 3: device will perform a bus detach-attach sequence when it receives a DFU_DETACH request. The host must not issue a USB Reset. (bitWillDetach)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 2: device is able to communicate via USB afeter Manifestation phase.(bitManifestationTolerant)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no, must see bus reset&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit1: upload capable(bitCanUpload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit0: download capable(bitCanDnload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || wDetachTimeOut || 2 || Number || Time,in milliseconds, that the device will wait after receipt of the DFU_DETACH request. if this time elapses without a USB reaset, then the device will terminate the Reconfiguration phase and revert back to normal operation . This repreents the maximum time that the device can wait(depending on its timers, etc.).The host may specify a shorter timeout in the DFU_DETACH request.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || wTransferSize || 2 || Number || Maximum number of bytes that the device can accept per control-write transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bcdDFUVersion || 2 || BCD || Numeric expression identifying the version of the DFU Specification release.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Mode Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 02h || DFU mode protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:USB-DFU_Descriptor.png USB-DFU Product&#039;s USB Descriptor]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:UpdataProcess.png DFU Updata Process Diagram]&lt;br /&gt;
#[[How To Judge The Bootloader Program Is Updating Or Jump To Application Program]]&lt;br /&gt;
#[[How To Jump To Application Program]]&lt;br /&gt;
#[[Modify dfu-util For Ubuntu 14.04]]&lt;br /&gt;
#Links&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59876</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59876"/>
		<updated>2016-01-08T03:29:38Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* USB Bootloader */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
=== Avalon6 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUC2 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
==== Support USB-DFU Mode ====&lt;br /&gt;
==== Using USB-DFU Protocol ====&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:USB-DFU_Descriptor.png USB-DFU Product&#039;s USB Descriptor]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:UpdataProcess.png DFU Updata Process Diagram]&lt;br /&gt;
#[[How To Judge The Bootloader Program Is Updating Or Jump To Application Program]]&lt;br /&gt;
#[[How To Jump To Application Program]]&lt;br /&gt;
#[[Modify dfu-util For Ubuntu 14.04]]&lt;br /&gt;
#Links&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Using_USB-DFU_Protocol&amp;diff=59875</id>
		<title>Using USB-DFU Protocol</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Using_USB-DFU_Protocol&amp;diff=59875"/>
		<updated>2016-01-08T03:13:49Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: Created page with &amp;quot;{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot; |+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Device Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt; !Offset!!Field!!Size!!Value!!Descripton |- | 0 || bLength || 1 |...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Device Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
!Offset!!Field!!Size!!Value!!Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 12h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 01h || DEVICE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bcdUSB || 2 || 0100h || USB specification release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bDeviceClass || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bDeviceSubClass || 1 || 00h || See interface&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bDeviceProtocol || 1 || 00h || See interface.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bMaxPacketSize0 || 1 || 8,16,32,64 || Maximum packet size for endpoint.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || idVendor || 2 || ID || Vendor ID. Assigned by the USB-IF.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || idProduct || 2 || ID || Product ID. Assigned by manufacturer.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || bcdDevice || 2 || BCD || Device release number in binary coded decimal.&lt;br /&gt;
|-&lt;br /&gt;
| 14 || iManufacturer || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 15 || iProduct || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || iSerialNumber || 1 || index || index of string descriptor.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || bNumConfigurations || 1 || 01h || One configuration only for DFU. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 01h || Runtime protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Functional Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 21h || DFU FUNCTIONAL descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bmAttributes || 1 || Bit mask || DFU attributes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 7……4: reserved&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 3: device will perform a bus detach-attach sequence when it receives a DFU_DETACH request. The host must not issue a USB Reset. (bitWillDetach)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit 2: device is able to communicate via USB afeter Manifestation phase.(bitManifestationTolerant)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no, must see bus reset&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit1: upload capable(bitCanUpload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit0: download capable(bitCanDnload)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0 = no&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 = yes&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3 || wDetachTimeOut || 2 || Number || Time,in milliseconds, that the device will wait after receipt of the DFU_DETACH request. if this time elapses without a USB reaset, then the device will terminate the Reconfiguration phase and revert back to normal operation . This repreents the maximum time that the device can wait(depending on its timers, etc.).The host may specify a shorter timeout in the DFU_DETACH request.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || wTransferSize || 2 || Number || Maximum number of bytes that the device can accept per control-write transaction.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bcdDFUVersion || 2 || BCD || Numeric expression identifying the version of the DFU Specification release.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1 class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%; height: 100px&amp;quot;&lt;br /&gt;
|+&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;DFU Mode Interface Descriptor&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
! Offset !! Field !! Size !! Value !! Descripton&lt;br /&gt;
|-&lt;br /&gt;
| 0 || bLength || 1 || 09h || Size of this descriptor,in bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || bDescriptorType || 1 || 04h || INTERFACE descriptor type.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || bInterfaceNumber || 1 || Number || Number of this interface.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || bAlternateSetting || 1 || 00h || Alternate setting. Must be zero.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || bNumEndpoints || 1 || 00h || Only the control pipe is used.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || bInterfaceClass || 1 || FEh || Application Specific Class Code.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || bInterfaceSubClass || 1 || 01h || Device Firmware Upgrade Code.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || bInterfaceProtocol || 1 || 02h || DFU mode protocol.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || iInterface || 1 || index || Index of string descriptor for this interface.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59874</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59874"/>
		<updated>2016-01-08T03:08:24Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* AUC2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
=== Avalon6 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== AUC2 LED ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
#Support USB-DFU Mode&lt;br /&gt;
#Using USB-DFU Protocol&lt;br /&gt;
##[[DFU Device Descriptor]]&lt;br /&gt;
##[[DFU Interface Descriptor]]&lt;br /&gt;
##[[DFU Functional Descriptor]]&lt;br /&gt;
##[[DFU Mode Interface Descriptor]]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:USB-DFU_Descriptor.png Detail USB-DUF Product&#039;s USB Descriptor]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:UpdataProcess.png DFU Updata Process Diagram]&lt;br /&gt;
#[[How To Judge The Bootloader Program Is Updating Or Jump To Application Program]]&lt;br /&gt;
#[[How To Jump To Application Program]]&lt;br /&gt;
#[[Modify dfu-util For Ubuntu 14.04]]&lt;br /&gt;
#See also&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Modify_dfu-util_For_Ubuntu_14.04&amp;diff=59873</id>
		<title>Modify dfu-util For Ubuntu 14.04</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Modify_dfu-util_For_Ubuntu_14.04&amp;diff=59873"/>
		<updated>2016-01-08T03:08:04Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: Created page with &amp;quot; #Inside your home directory, download dfu-util   git clone git://git.openezx.org/dfu-util.git   open dfu-util/src/dfu_load.c   add this instruction &amp;quot;[https://en.bitcoin.it/wi...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; #Inside your home directory, download dfu-util&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.openezx.org/dfu-util.git&lt;br /&gt;
&lt;br /&gt;
 open dfu-util/src/dfu_load.c&lt;br /&gt;
&lt;br /&gt;
 add this instruction &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&lt;br /&gt;
&lt;br /&gt;
 cd dfu-util&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
 The resulting binary is dfu-util/src/dfu-util.&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59871</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59871"/>
		<updated>2016-01-08T02:07:12Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* AUC2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Avalon6 LED&lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ AUC2 LED&lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
#Support USB-DFU Mode&lt;br /&gt;
#Using USB-DFU Protocol&lt;br /&gt;
##[[DFU Device Descriptor]]&lt;br /&gt;
##[[DFU Interface Descriptor]]&lt;br /&gt;
##[[DFU Functional Descriptor]]&lt;br /&gt;
##[[DFU Mode Interface Descriptor]]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:USB-DFU_Descriptor.png Detail USB-DUF Product&#039;s USB Descriptor]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:UpdataProcess.png DFU Updata Process Diagram]&lt;br /&gt;
#[[How To Judge The Bootloader Program Is Updating Or Jump To Application Program]]&lt;br /&gt;
#[[How To Jump To Application Program]]&lt;br /&gt;
#Modify dfu-util For Ubuntu 14.04&lt;br /&gt;
     #Inside your home directory, download dfu-util&amp;lt;br /&amp;gt;&lt;br /&gt;
     git clone git://git.openezx.org/dfu-util.git&amp;lt;br /&amp;gt;&lt;br /&gt;
     open dfu-util/src/dfu_load.c&amp;lt;br /&amp;gt;&lt;br /&gt;
     add this instruction &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&amp;lt;br /&amp;gt;&lt;br /&gt;
     cd dfu-util&amp;lt;br /&amp;gt;&lt;br /&gt;
     ./autogen.sh&amp;lt;br /&amp;gt;&lt;br /&gt;
     ./configure&amp;lt;br /&amp;gt;&lt;br /&gt;
     make&amp;lt;br /&amp;gt;&lt;br /&gt;
     The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59870</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59870"/>
		<updated>2016-01-08T02:05:11Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* LED */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Avalon6 LED&lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ AUC2 LED&lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Initializing or Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red&lt;br /&gt;
| Communication failed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== AUC2 Overview ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
#Support USB-DFU Mode&lt;br /&gt;
#Using USB-DFU Protocol&lt;br /&gt;
##[[DFU Device Descriptor]]&lt;br /&gt;
##[[DFU Interface Descriptor]]&lt;br /&gt;
##[[DFU Functional Descriptor]]&lt;br /&gt;
##[[DFU Mode Interface Descriptor]]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:USB-DFU_Descriptor.png Detail USB-DUF Product&#039;s USB Descriptor]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:UpdataProcess.png DFU Updata Process Diagram]&lt;br /&gt;
#[[How To Judge The Bootloader Program Is Updating Or Jump To Application Program]]&lt;br /&gt;
#[[How To Jump To Application Program]]&lt;br /&gt;
#Modify dfu-util For Ubuntu 14.04&lt;br /&gt;
     #Inside your home directory, download dfu-util&amp;lt;br /&amp;gt;&lt;br /&gt;
     git clone git://git.openezx.org/dfu-util.git&amp;lt;br /&amp;gt;&lt;br /&gt;
     open dfu-util/src/dfu_load.c&amp;lt;br /&amp;gt;&lt;br /&gt;
     add this instruction &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&amp;lt;br /&amp;gt;&lt;br /&gt;
     cd dfu-util&amp;lt;br /&amp;gt;&lt;br /&gt;
     ./autogen.sh&amp;lt;br /&amp;gt;&lt;br /&gt;
     ./configure&amp;lt;br /&amp;gt;&lt;br /&gt;
     make&amp;lt;br /&amp;gt;&lt;br /&gt;
     The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59869</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59869"/>
		<updated>2016-01-08T01:45:27Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* AUC2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== AUC2 Overview ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
#Support USB-DFU Mode&lt;br /&gt;
#Using USB-DFU Protocol&lt;br /&gt;
##[[DFU Device Descriptor]]&lt;br /&gt;
##[[DFU Interface Descriptor]]&lt;br /&gt;
##[[DFU Functional Descriptor]]&lt;br /&gt;
##[[DFU Mode Interface Descriptor]]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:USB-DFU_Descriptor.png Detail USB-DUF Product&#039;s USB Descriptor]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:UpdataProcess.png DFU Updata Process Diagram]&lt;br /&gt;
#[[How To Judge The Bootloader Program Is Updating Or Jump To Application Program]]&lt;br /&gt;
#[[How To Jump To Application Program]]&lt;br /&gt;
#Modify dfu-util For Ubuntu 14.04&lt;br /&gt;
     #Inside your home directory, download dfu-util&amp;lt;br /&amp;gt;&lt;br /&gt;
     git clone git://git.openezx.org/dfu-util.git&amp;lt;br /&amp;gt;&lt;br /&gt;
     open dfu-util/src/dfu_load.c&amp;lt;br /&amp;gt;&lt;br /&gt;
     add this instruction &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&amp;lt;br /&amp;gt;&lt;br /&gt;
     cd dfu-util&amp;lt;br /&amp;gt;&lt;br /&gt;
     ./autogen.sh&amp;lt;br /&amp;gt;&lt;br /&gt;
     ./configure&amp;lt;br /&amp;gt;&lt;br /&gt;
     make&amp;lt;br /&amp;gt;&lt;br /&gt;
     The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59863</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59863"/>
		<updated>2016-01-07T13:47:34Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* USB Bootloader */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
#Support USB-DFU Mode&lt;br /&gt;
#Using USB-DFU Protocol&lt;br /&gt;
##[[DFU Device Descriptor]]&lt;br /&gt;
##[[DFU Interface Descriptor]]&lt;br /&gt;
##[[DFU Functional Descriptor]]&lt;br /&gt;
##[[DFU Mode Interface Descriptor]]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:USB-DFU_Descriptor.png Detail USB-DUF Product&#039;s USB Descriptor]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:UpdataProcess.png DFU Updata Process Diagram]&lt;br /&gt;
#[[How To Judge The Bootloader Program Is Updating Or Jump To Application Program]]&lt;br /&gt;
#[[How To Jump To Application Program]]&lt;br /&gt;
#Modify dfu-util For Ubuntu 14.04&lt;br /&gt;
     #Inside your home directory, download dfu-util&amp;lt;br /&amp;gt;&lt;br /&gt;
     git clone git://git.openezx.org/dfu-util.git&amp;lt;br /&amp;gt;&lt;br /&gt;
     open dfu-util/src/dfu_load.c&amp;lt;br /&amp;gt;&lt;br /&gt;
     add this instruction &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&amp;lt;br /&amp;gt;&lt;br /&gt;
     cd dfu-util&amp;lt;br /&amp;gt;&lt;br /&gt;
     ./autogen.sh&amp;lt;br /&amp;gt;&lt;br /&gt;
     ./configure&amp;lt;br /&amp;gt;&lt;br /&gt;
     make&amp;lt;br /&amp;gt;&lt;br /&gt;
     The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59862</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59862"/>
		<updated>2016-01-07T13:44:08Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* USB Bootloader */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
#Support USB-DFU Mode&lt;br /&gt;
#Using USB-DFU Protocol&lt;br /&gt;
##[[DFU Device Descriptor]]&lt;br /&gt;
##[[DFU Interface Descriptor]]&lt;br /&gt;
##[[DFU Functional Descriptor]]&lt;br /&gt;
##[[DFU Mode Interface Descriptor]]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:USB-DFU_Descriptor.png Detail USB-DUF Product&#039;s USB Descriptor]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:UpdataProcess.png DFU Updata Process Diagram]&lt;br /&gt;
#[[How To Judge The Bootloader Program Is Updating Or Jump To Application Program]]&lt;br /&gt;
#[[How To Jump To Application Program]]&lt;br /&gt;
#Modify dfu-util For Ubuntu 14.04&lt;br /&gt;
     #Inside your home directory, download dfu-util&amp;lt;br /&amp;gt;&lt;br /&gt;
     git clone git://git.openezx.org/dfu-util.git&amp;lt;br /&amp;gt;&lt;br /&gt;
     open dfu-util/src/dfu_load.c&amp;lt;br /&amp;gt;&lt;br /&gt;
     add this sentence &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&amp;lt;br /&amp;gt;&lt;br /&gt;
     cd dfu-util&amp;lt;br /&amp;gt;&lt;br /&gt;
     ./autogen.sh&amp;lt;br /&amp;gt;&lt;br /&gt;
     ./configure&amp;lt;br /&amp;gt;&lt;br /&gt;
     make&amp;lt;br /&amp;gt;&lt;br /&gt;
     The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=File:UpdataProcess.png&amp;diff=59861</id>
		<title>File:UpdataProcess.png</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=File:UpdataProcess.png&amp;diff=59861"/>
		<updated>2016-01-07T13:43:05Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: USB-DFU Bootloader Updata Process&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;USB-DFU Bootloader Updata Process&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=How_To_Judge_The_Bootloader_Program_Is_Updating_Or_Jump_To_Application_Program&amp;diff=59859</id>
		<title>How To Judge The Bootloader Program Is Updating Or Jump To Application Program</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=How_To_Judge_The_Bootloader_Program_Is_Updating_Or_Jump_To_Application_Program&amp;diff=59859"/>
		<updated>2016-01-07T11:09:08Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: Created page with &amp;quot;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;I used a updata flag which is a four bytes word and  is writed at fixd flash address (0x8000 - 4)  The flag&amp;#039;s value is 0xAABBCCDD  When the bootloader program run, f...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;I used a updata flag which is a four bytes word and &lt;br /&gt;
is writed at fixd flash address (0x8000 - 4)&lt;br /&gt;
&lt;br /&gt;
The flag&#039;s value is 0xAABBCCDD&lt;br /&gt;
&lt;br /&gt;
When the bootloader program run, first it judge the updata flag,&lt;br /&gt;
if the updata falg is not equal 0xAABBCCDD,&amp;lt;br /&amp;gt;&lt;br /&gt;
it will jump to application program.&lt;br /&gt;
otherwise it will run to updata program.&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59858</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59858"/>
		<updated>2016-01-07T10:55:33Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* USB Bootloader */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
#Support USB-DFU Mode&lt;br /&gt;
#Using USB-DFU Protocol&lt;br /&gt;
##[[DFU Device Descriptor]]&lt;br /&gt;
##[[DFU Interface Descriptor]]&lt;br /&gt;
##[[DFU Functional Descriptor]]&lt;br /&gt;
##[[DFU Mode Interface Descriptor]]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:USB-DFU_Descriptor.png Detail USB-DUF Product&#039;s USB Descriptor]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:USB-DFU_Descriptor.png DFU Updata Process Diagram]&lt;br /&gt;
#[[How To Judge The Bootloader Program Is Updating Or Jump To Application Program]]&lt;br /&gt;
#[[How To Jump To Application Program]]&lt;br /&gt;
#Modify dfu-util For Ubuntu 14.04&lt;br /&gt;
     #Inside your home directory, download dfu-util&amp;lt;br /&amp;gt;&lt;br /&gt;
     git clone git://git.openezx.org/dfu-util.git&amp;lt;br /&amp;gt;&lt;br /&gt;
     open dfu-util/src/dfu_load.c&amp;lt;br /&amp;gt;&lt;br /&gt;
     add this sentence &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&amp;lt;br /&amp;gt;&lt;br /&gt;
     cd dfu-util&amp;lt;br /&amp;gt;&lt;br /&gt;
     ./autogen.sh&amp;lt;br /&amp;gt;&lt;br /&gt;
     ./configure&amp;lt;br /&amp;gt;&lt;br /&gt;
     make&amp;lt;br /&amp;gt;&lt;br /&gt;
     The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59857</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59857"/>
		<updated>2016-01-07T10:43:45Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* USB Bootloader */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
#Support USB-DFU Mode&lt;br /&gt;
#Using USB-DFU Protocol&lt;br /&gt;
##[[DFU Device Descriptor]]&lt;br /&gt;
##[[DFU Interface Descriptor]]&lt;br /&gt;
##[[DFU Functional Descriptor]]&lt;br /&gt;
##[[DFU Mode Interface Descriptor]]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:USB-DFU_Descriptor.png Detail USB-DUF Product&#039;s USB Descriptor]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:USB-DFU_Descriptor.png DFU Updata Process Diagram]&lt;br /&gt;
#[[How To Jump To Application Program]]&lt;br /&gt;
#Modify dfu-util For Ubuntu 14.04&lt;br /&gt;
     #Inside your home directory, download dfu-util&amp;lt;br /&amp;gt;&lt;br /&gt;
     git clone git://git.openezx.org/dfu-util.git&amp;lt;br /&amp;gt;&lt;br /&gt;
     open dfu-util/src/dfu_load.c&amp;lt;br /&amp;gt;&lt;br /&gt;
     add this sentence &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&amp;lt;br /&amp;gt;&lt;br /&gt;
     cd dfu-util&amp;lt;br /&amp;gt;&lt;br /&gt;
     ./autogen.sh&amp;lt;br /&amp;gt;&lt;br /&gt;
     ./configure&amp;lt;br /&amp;gt;&lt;br /&gt;
     make&amp;lt;br /&amp;gt;&lt;br /&gt;
     The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=How_To_Jump_To_Application_Program&amp;diff=59856</id>
		<title>How To Jump To Application Program</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=How_To_Jump_To_Application_Program&amp;diff=59856"/>
		<updated>2016-01-07T10:43:30Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: Created page with &amp;quot;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;When we don&amp;#039;t want to updata application program,&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;big&amp;gt;&amp;lt;big&amp;gt;the bootloader program should run to application program.&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br /&amp;gt; &amp;lt;big&amp;gt;&amp;lt;big&amp;gt;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;When we don&#039;t want to updata application program,&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;the bootloader program should run to application program.&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;In order to achieve this goal, we can add under code in your bootloader program.&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4000&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4000 is my application program&#039;s MSP point, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;   &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;asm volatile(&amp;quot;mov sp, r0&amp;quot;);&amp;lt;/font&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, =0x4004&amp;quot;);&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;blue&amp;quot;&amp;gt;//&amp;quot;the 0x4004 is my application program reset-function entry address, you must change it adapt to your&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;asm volatile(&amp;quot;ldr r0, [r0]&amp;quot;);&amp;lt;/font&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot; size=&amp;quot;4&amp;quot;&amp;gt;asm volatile(&amp;quot;mov pc, r0&amp;quot;);&amp;lt;/font&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59855</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59855"/>
		<updated>2016-01-07T09:58:40Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* USB Bootloader */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
#Support USB-DFU Mode&lt;br /&gt;
#Using USB-DFU Protocol&lt;br /&gt;
##[[DFU Device Descriptor]]&lt;br /&gt;
##[[DFU Interface Descriptor]]&lt;br /&gt;
##[[DFU Functional Descriptor]]&lt;br /&gt;
##[[DFU Mode Interface Descriptor]]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:USB-DFU_Descriptor.png Detail USB-DUF Product&#039;s USB Descriptor]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:USB-DFU_Descriptor.png DFU Updata Process Diagram]&lt;br /&gt;
#Modify dfu-util for Ubuntu 14.04&lt;br /&gt;
     #Inside your home directory, download dfu-util&amp;lt;br /&amp;gt;&lt;br /&gt;
     git clone git://git.openezx.org/dfu-util.git&amp;lt;br /&amp;gt;&lt;br /&gt;
     open dfu-util/src/dfu_load.c&amp;lt;br /&amp;gt;&lt;br /&gt;
     add this sentence &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; under line 134&amp;lt;br /&amp;gt;&lt;br /&gt;
     cd dfu-util&amp;lt;br /&amp;gt;&lt;br /&gt;
     ./autogen.sh&amp;lt;br /&amp;gt;&lt;br /&gt;
     ./configure&amp;lt;br /&amp;gt;&lt;br /&gt;
     make&amp;lt;br /&amp;gt;&lt;br /&gt;
     The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59854</id>
		<title>Avalon6</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Avalon6&amp;diff=59854"/>
		<updated>2016-01-07T09:56:36Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: /* USB Bootloader */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Basic Information =&lt;br /&gt;
 Hashrate:&lt;br /&gt;
     &#039;&#039;&#039;3.5T (+-5%)&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
 Power consumption:&lt;br /&gt;
     990W (measure on 12V port of the device)&lt;br /&gt;
     1100W (on the wall, with assumption of 90% power conversion ratio)&lt;br /&gt;
 &lt;br /&gt;
 Power per hash:&lt;br /&gt;
     270J/THash (device only)&lt;br /&gt;
     295J/THash (on the wall, with assumption of 90% power conversion&lt;br /&gt;
 ratio)&lt;br /&gt;
 &lt;br /&gt;
 Overclocking:&lt;br /&gt;
     Support automatically optimize frequency, no need to overclock manually.&lt;br /&gt;
 &lt;br /&gt;
 PSU output pin:&lt;br /&gt;
     4x6PIN PCIe power connector. *All must be connected.*&lt;br /&gt;
 &lt;br /&gt;
 PSU requirements:&lt;br /&gt;
     Minimum 1100W output, recommend to use high-quality PSU for server&lt;br /&gt;
 with more than 1200W output and high quality power cable.&lt;br /&gt;
     Input voltage no lower than 11.7V and no higher than 12.2V (numbers&lt;br /&gt;
 take from the controller)&lt;br /&gt;
     Lower voltage leads to lower hashrate and higher voltage leads to&lt;br /&gt;
 possible device burning down.&lt;br /&gt;
     NOTICE: Poor quality cable may result in low voltage.&lt;br /&gt;
 &lt;br /&gt;
 Fan:&lt;br /&gt;
     Specs: 12038&lt;br /&gt;
     Current: between 1.6A and 2.8A.&lt;br /&gt;
     Minimum RPM: 3800.&lt;br /&gt;
     *NOTICE* If the fan is broken or the fan&#039;s RPM cannot be measure,&lt;br /&gt;
 the device will not start.&lt;br /&gt;
 &lt;br /&gt;
 Controller:&lt;br /&gt;
     Raspberry Pi (version B or B+)&lt;br /&gt;
     Raspberry Pi 2 will be supported at the middle of December 2015&lt;br /&gt;
     Each Rpi can control approximately ~12 devices.&lt;br /&gt;
 &lt;br /&gt;
 AUC:&lt;br /&gt;
     Each AUC can connect up to 6 devices.&lt;br /&gt;
 &lt;br /&gt;
 Dimensions:&lt;br /&gt;
     354x136x150mm&lt;br /&gt;
 &lt;br /&gt;
 Net weight:&lt;br /&gt;
     ~4.8kg&lt;br /&gt;
 &lt;br /&gt;
 Protection Degree:&lt;br /&gt;
     IP20&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! LED Status&lt;br /&gt;
! MEMO&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White&lt;br /&gt;
| Power on&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Blue&lt;br /&gt;
| Working normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Yellow blinking&lt;br /&gt;
| Idle normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Green blinking&lt;br /&gt;
| Detect fan and mcu&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| White blinking&lt;br /&gt;
| Turn on LED manually&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Red blinking&lt;br /&gt;
| Toohot/Loopback failed/PG failed/Coretest failed/Voltage error/Temperature sensor error/No fan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MM Error Codes ==&lt;br /&gt;
&#039;&#039;&#039;[http://downloads.canaan-creative.com/querystatus.html &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Query EC here&amp;lt;/span&amp;gt;]&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! CODE&lt;br /&gt;
! NAME&lt;br /&gt;
! TYPE&lt;br /&gt;
! MEMO&lt;br /&gt;
! What to do&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
| CODE_IDLE&lt;br /&gt;
| WARN&lt;br /&gt;
| Idle&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
| CODE_TOOHOT&lt;br /&gt;
| FATAL&lt;br /&gt;
| Too hot&lt;br /&gt;
| Check if the fan is connect successfully&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4&lt;br /&gt;
| CODE_LOOP0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 0 if PG0 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8&lt;br /&gt;
| CODE_LOOP1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 loopback failed&lt;br /&gt;
| Replace a new hash unit  for channel 1 if PG1 is ok&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16&lt;br /&gt;
| CODE_INVALIDMCU&lt;br /&gt;
| FATAL&lt;br /&gt;
| MCU cann&#039;t be detected&lt;br /&gt;
| Replace a new CTRL board&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32&lt;br /&gt;
| CODE_NOSTRATUM&lt;br /&gt;
| WARN&lt;br /&gt;
| No stratum&lt;br /&gt;
| Check if the network is ok or AUC is work  normally&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 64&lt;br /&gt;
| CODE_RBOVERFLOW&lt;br /&gt;
| WARN&lt;br /&gt;
| Nonce ringbuffer overflow&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 128&lt;br /&gt;
| CODE_MMCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
| Find iic rx crc mismatch&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 256&lt;br /&gt;
| CODE_MCUCRCFAILED&lt;br /&gt;
| WARN&lt;br /&gt;
| Find mcu rx irc mismatch&lt;br /&gt;
| Ignore it please, If CGMiner is restart, It will be ok. &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 512&lt;br /&gt;
| CODE_NOFAN&lt;br /&gt;
| FATAL&lt;br /&gt;
| Fan cann&#039;t be found&lt;br /&gt;
| Check the fan connection&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 1024&lt;br /&gt;
| CODE_PG0FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 0 power good failed&lt;br /&gt;
| Check the PSU for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 2048&lt;br /&gt;
| CODE_PG1FAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Channel 1 power good failed&lt;br /&gt;
| Check the PSU for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 4096&lt;br /&gt;
| CODE_CORETESTFAILED&lt;br /&gt;
| FATAL&lt;br /&gt;
| Find bad chip on channel 0 or channel 1&lt;br /&gt;
| Replace a new hash unit if hash rate is too low, or else you can ignore it.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8192&lt;br /&gt;
| CODE_ADC0_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 0&lt;br /&gt;
| Replace a new hash unit  for channel 0&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 16384&lt;br /&gt;
| CODE_ADC1_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| Temperature sensor cann&#039;t be detected on channel 1&lt;br /&gt;
| Replace a new hash unit  for channel 1&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 32768&lt;br /&gt;
| CODE_VOL_ERR&lt;br /&gt;
| FATAL&lt;br /&gt;
| MM is not permit to run at the voltage for safety&lt;br /&gt;
| Change another PSU for the machine&lt;br /&gt;
|}&lt;br /&gt;
TYPE meaning:&lt;br /&gt;
  &#039;&#039;&#039;WARN&#039;&#039;&#039;-It designates potentially harmful situations, but you can ignore it.&lt;br /&gt;
  &#039;&#039;&#039;FATAL&#039;&#039;&#039;-It designates very severe error events that will presumably lead the Avalon6 to crash.&lt;br /&gt;
&lt;br /&gt;
= Firmware =&lt;br /&gt;
== RPi Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151225/ 20151225] ===&lt;br /&gt;
* OpenWrt:Update to 15.05&lt;br /&gt;
* OpenWrt:Support Raspberry Pi 2 Model B&lt;br /&gt;
* LuCI:Sync with for-15.05 branch (ab31abd244979d1ff234a15a4a3cf69ac1b73688)&lt;br /&gt;
* CGMiner:Sync with ckolivas&#039;s master (5a456afbfa028162060afd66636b7cb266b35a53)&lt;br /&gt;
* CGMiner:Add more options for smartspeed (Only support MM version &amp;gt;= 601512-xxxxxxxx)&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151111/ 20151111] ===&lt;br /&gt;
*CGMiner:Fix divide by zero in Avalon4 driver&lt;br /&gt;
*CGMiner:Add stratum difficulty in pool api&lt;br /&gt;
*CGMiner:Update option for Avalon6&lt;br /&gt;
*CGMiner:Update Vol api display in Avalon4 driver for Avalon6&lt;br /&gt;
*CGMiner:Update fan adjust for Avalon6&lt;br /&gt;
*CGMiner:Update target temp settting for Avalon6&lt;br /&gt;
*LuCI:Update display information for Avalon6&lt;br /&gt;
*LuCI:Update device name for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner configuration for Avalon6&lt;br /&gt;
*LuCI:Update CGMiner setting for Avalon theme&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151031/ 20151031] ===&lt;br /&gt;
* Fix nonce counter for multiple miners&lt;br /&gt;
* Display ASIC counts as TA in CGMiner status&lt;br /&gt;
* Update maximum difficulty for Avalon4 and Avalon6&lt;br /&gt;
* Update temperature check for Avalon6&lt;br /&gt;
* Add GHSmm for hash rate comparison&lt;br /&gt;
* Display PLL information for Avalon6&lt;br /&gt;
* Turn on nonce check as default for Avalon6&lt;br /&gt;
* Correct on voltage decode&lt;br /&gt;
* Enable adjust frequency automatically as default for Avalon6&lt;br /&gt;
* Decode voltage and temperature decode for Avalon6&lt;br /&gt;
* Support err code for Avalon6&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/20151001/ 20151001] ===&lt;br /&gt;
* First version of Avalon6 firmware&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/openwrt/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
* Fix duplicate address&lt;br /&gt;
* Update GHS counter to fix the gap between miner and mm&lt;br /&gt;
* Add a new smart speed option&lt;br /&gt;
&lt;br /&gt;
== MM Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-12-28/ 2015-12-28] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601512-57532250&#039;&#039;&#039;&lt;br /&gt;
* Fix:Don&#039;t touch fan by miner when mm is too hot&lt;br /&gt;
* Fix:Update idle process with toohot detect, stratum detect, and invalid mcu protect&lt;br /&gt;
* Fix:Fix coretest failed cause by incorrect pll setting&lt;br /&gt;
* Update:Update API_TIMEOUT_CONST&lt;br /&gt;
* Add:Support adjust freq by CGMiner when mm is working&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-24/ 2015-11-24] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-f4f59c70&#039;&#039;&#039;&lt;br /&gt;
* Update Core test check rules&lt;br /&gt;
* Update Input voltage check rules (Input voltage should not &amp;gt;= 12.8V)&lt;br /&gt;
* Fix result when run test scripts&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-11-11/ 2015-11-11] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601511-e3d244c0 &#039;&#039;&#039;&lt;br /&gt;
* Add voltage range detect&lt;br /&gt;
* Check maximum rpm when detect fan polar&lt;br /&gt;
* Check temp for bad ntc resistor&lt;br /&gt;
* Check voltage when MM is starting&lt;br /&gt;
* Monitor powergood when power on&lt;br /&gt;
* Update temperature check&lt;br /&gt;
* Update nonce process&lt;br /&gt;
* Update frequency table&lt;br /&gt;
* Fix conflict address&lt;br /&gt;
* Enable 25MHz clock for debug purpose&lt;br /&gt;
* Disable pll when if miner is invalid when process FREQ_WORK&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601510-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* Update IIC and UART communication&lt;br /&gt;
* Support core test by AVA4_P_TEST&lt;br /&gt;
* Update ASIC_FREQMIN to 100MHz&lt;br /&gt;
* Detect ASIC counts by LOOPBACK&lt;br /&gt;
* Fix upgrade failed caused by i2c FIFO overflow&lt;br /&gt;
* Update timer function&lt;br /&gt;
* Use GPIO led as address indicator&lt;br /&gt;
* Always disable the invalid miner when PG or LOOPBACK failed&lt;br /&gt;
* Add PLL status in P_STATUS_M&lt;br /&gt;
* Add err code&lt;br /&gt;
* Support ADC capture&lt;br /&gt;
* Keep free run if MCU can&#039;t be detected&lt;br /&gt;
* Update led status&lt;br /&gt;
* Rewrite boot loader with c code&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/2015-09-30/ 2015-09-30] ===&lt;br /&gt;
* Version &#039;&#039;&#039;601509-a2613610&#039;&#039;&#039;&lt;br /&gt;
* First MM firmware for Avalon6.0 S &lt;br /&gt;
* Support 2 miners&lt;br /&gt;
* Detect asic counts when start&lt;br /&gt;
* Support target filter&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/nexttesting/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
== MCU Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/mm/mcu/2015-10-31/ 2015-10-31] ===&lt;br /&gt;
* Version &#039;&#039;&#039;6C1508-afa837a0&#039;&#039;&#039;&lt;br /&gt;
* For adc and temperature capture use MM protocal&lt;br /&gt;
&lt;br /&gt;
== AUC2 Firmware ==&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/2015-12-08 20151208] ===&lt;br /&gt;
* AUC version: &#039;&#039;&#039;AUC-20151208&#039;&#039;&#039;&lt;br /&gt;
* First release&lt;br /&gt;
&lt;br /&gt;
=== [http://downloads.canaan-creative.com/software/avalon6/auc2/NEXT-TESTING/ NEXT-TESTING] ===&lt;br /&gt;
* NOTICE: Only for testing&lt;br /&gt;
&lt;br /&gt;
= Software Development =&lt;br /&gt;
== Controller firmware ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/avalon6/ Daily building] ===&lt;br /&gt;
=== CGMiner Under Ubuntu 14.04 ===&lt;br /&gt;
 #Inside your home directory, download Cgminer&lt;br /&gt;
 git clone https://github.com/Canaan-Creative/cgminer&lt;br /&gt;
 cd cgminer&lt;br /&gt;
 git checkout origin/avalon4 -b avalon4&lt;br /&gt;
 ./autogen.sh --enable-avalon4&lt;br /&gt;
 make -j 4&lt;br /&gt;
 # Run&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass &lt;br /&gt;
 or&lt;br /&gt;
 sudo ./cgminer --avalon4-freq 200 --avalon4-voltage 7125 -o http://stratum.pool:3333 -u  work -p pass --api-allow W:192.168.2,W:192.168.2.1 --api-listen $@ 2&amp;gt;./log&lt;br /&gt;
&lt;br /&gt;
=== Frequency Statechart ===&lt;br /&gt;
  [[File:A6 frequency state.png | none|  640px]]&lt;br /&gt;
&lt;br /&gt;
== MM ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/mm60/ Daily building] ===&lt;br /&gt;
=== Avalon6 TB2 ===&lt;br /&gt;
 $ make -C firmware PLATFORM=MM60_TB2&lt;br /&gt;
=== Avalon6.0 S ===&lt;br /&gt;
 $ make -C firmware&lt;br /&gt;
&lt;br /&gt;
== AUC2 ==&lt;br /&gt;
=== [http://build.canaan-creative.com:8080/~buildbot/auc2/ Daily building] ===&lt;br /&gt;
=== USB Bootloader ===&lt;br /&gt;
#Support USB-DFU Mode&lt;br /&gt;
#Using USB-DFU Protocol&lt;br /&gt;
##[[DFU Device Descriptor]]&lt;br /&gt;
##[[DFU Interface Descriptor]]&lt;br /&gt;
##[[DFU Functional Descriptor]]&lt;br /&gt;
##[[DFU Mode Interface Descriptor]]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:USB-DFU_Descriptor.png Detail USB-DUF Product&#039;s USB Descriptor]&lt;br /&gt;
#[https://en.bitcoin.it/wiki/File:USB-DFU_Descriptor.png DFU Updata Process Diagram]&lt;br /&gt;
#Modify dfu-util for Ubuntu 14.04&lt;br /&gt;
     #Inside your home directory, download dfu-util&amp;lt;br /&amp;gt;&lt;br /&gt;
     git clone git://git.openezx.org/dfu-util.git&amp;lt;br /&amp;gt;&lt;br /&gt;
     open dfu-util/src/dfu_load.c&amp;lt;br /&amp;gt;&lt;br /&gt;
     insert this sentence &amp;quot;[https://en.bitcoin.it/wiki/File:Milli_sleep%28200%29.png milli_sleep(200);]&amp;quot; at line 135&amp;lt;br /&amp;gt;&lt;br /&gt;
     cd dfu-util&amp;lt;br /&amp;gt;&lt;br /&gt;
     ./autogen.sh&amp;lt;br /&amp;gt;&lt;br /&gt;
     ./configure&amp;lt;br /&amp;gt;&lt;br /&gt;
     make&amp;lt;br /&amp;gt;&lt;br /&gt;
     The resulting binary is dfu-util/src/dfu-util.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
=== OpenWrt ===&lt;br /&gt;
# Support Raspberry Pi 2B&lt;br /&gt;
# Update with the master branch&lt;br /&gt;
# Support Avalon6 in LuCI (Advanced version)&lt;br /&gt;
# Keep more coding on LuCI (Avalon theme)&lt;br /&gt;
&lt;br /&gt;
=== CGMiner ===&lt;br /&gt;
# Add auto speed option&lt;br /&gt;
# Merge the Avalon6 code to CK&#039;s master&lt;br /&gt;
&lt;br /&gt;
=== MM ===&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
# MM can be upgrade by mismatch firmware.&lt;br /&gt;
# local hashrate (GHS av) cann&#039;t match with the pool&#039;s hashrate&lt;br /&gt;
# Use 5 or more modules in one AUC will cause MM idle periodically.&lt;br /&gt;
# Duplicate MM address &lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
1. How to deal with the red blinking machine?&lt;br /&gt;
  [[File:A6 EC PROC.png | none|  640px]]&lt;br /&gt;
2. How to boot the machine or hashboard unit safely?&lt;br /&gt;
  [[File:A6 BOOT.png | none |  640px]]&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=File:Milli_sleep(200).png&amp;diff=59853</id>
		<title>File:Milli sleep(200).png</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=File:Milli_sleep(200).png&amp;diff=59853"/>
		<updated>2016-01-07T09:50:39Z</updated>

		<summary type="html">&lt;p&gt;Johnson-Fan: In dfu-util , Modify dfu_load.c,and add  Milli_sleep(200)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In dfu-util , Modify dfu_load.c,and add  Milli_sleep(200)&lt;/div&gt;</summary>
		<author><name>Johnson-Fan</name></author>
	</entry>
</feed>