Nintendo NES Classic Edition

= Identification =

On the back of the device, the following is printed:


 * NES

MOD. CLV-001


 * Famicom

MOD. CLV-101

= Sunxi support =

Manual build
You can build things for yourself by following our Manual build howto and by choosing from the configurations available below.

Sunxi/Legacy U-Boot
Use the  build target.

Mainline U-Boot
Use the Nintendo_NES_Classic_Edition_defconfig build target.

BSP Kernel
Use the nintendo_nes_classic_clv001.fex file.

Mainline kernel
Use the 'sun8i-r16-nintendo-nes-classic.dtb' device-tree binary.

Use the 'sun8i-r16-nintendo-super-nes-classic.dtb' device-tree binary.

= Tips, Tricks, Caveats =

FEL mode
The RESET button triggers FEL mode. Alternatively, send the character '2' to UART (DRAM is NOT initialized), or run 'fastboot' command on stock U-Boot (DRAM is initialized).

To verify you have successfully entered FEL mode, check the output of. For the Nintendo NES Classic Edition, it should look like: AWUSBFEX soc=00001667(A33) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000

Stock U-Boot
To enable boot0 debug mode (it gives command prompt on U-Boot), send the character 's' to UART.

key_press 0x00000073 HELLO! BOOT0 is starting! boot0 version : 4.2.0 boot0 commit : 2f04d11e4dfd9d5022e33833412462859727bdcc fel_flag = 0x00000000 rtc[0] value = 0x00000000 rtc[1] value = 0x00000000 rtc[2] value = 0x00000000 rtc[3] value = 0x00000000 DRAM DRIVE INFO: V1.7 DRAM Type =3 (2:DDR2,3:DDR3,6:LPDDR2,7:LPDDR3) DRAM zq value: 00003bbbDRAM CLK =600 MHZ ID CHECK VERSION: V0.1 using ic R16 USE PLL DDR1 USE PLL NORMAL PLL FREQUENCE = 1200 MHZ DRAM PLL DDR1 frequency extend open ! DRAM master priority setting ok. Auto calculate timing parameter! para_dram_tpr0 = 0047a14f para_dram_tpr1 = 01c2294c para_dram_tpr2 = 00069049 tcl = 6,tcwl = 4 DRAM TIMING PARA0 = 0b0f180c DRAM TIMING PARA1 = 0003040f DRAM TIMING PARA2 = 0406050a DRAM TIMING PARA3 = 0000400c DRAM TIMING PARA4 = 05020405 DRAM TIMING PARA5 = 05050403 DRAM TIMING PARA8 = 90003310 DRAM PHY INTERFACE PARA = 02040102 DRAM VTC is disable DRAM dynamic DQS/DQ ODT is on DRAM DQS gate is PD mode. DRAM one rank training is on,the value is 91003587 DRAM work mode register value = 004318d4 DRAM SIZE =256 M set one rank ODTMAP DRAM simple test OK. dram size =256 block from 4 to 39 nand block 4 is bad nand block 5 is bad nand block 6 is bad nand block 7 is bad current block is 8 and last block is 39. current block is 9 and last block is 39. current block is 10 and last block is 39. current block is 11 and last block is 39. current block is 12 and last block is 39. sum=0a401204 src_sum=0a401204 The file stored in start block %u is perfect. Ready to disable icache. Jump to secend Boot. [     0.334]

U-Boot 2011.09-rc1 (Aug 30 2016 - 12:07:36) Allwinner Technology

[     0.341]version: 1.1.0 [     0.344]uboot commit : 2f04d11e4dfd9d5022e33833412462859727bdcc ready no battery, limit to dc dram_para_set start dram_para_set end [     0.450]DRAM:  256 MiB relocation Offset is: 07b73000 board.c 621 smcl's set manager is NULL lcd_panel_fun[0].cfg_panel_info is NULL lcd_panel_fun[0].cfg_open_flow is NULL Using default environment

In:   serial Out:  serial Err:  serial fastboot partitions mbr not exist base bootcmd=sunxi_flash phy_read 43800000 30 20;boota 43800000 bootcmd set setargs_nand key 0 cant find rcvy value cant find fstbt value no misc partition is found to be run cmd=sunxi_flash phy_read 43800000 30 20;boota 43800000 WORK_MODE_BOOT board_status_probe [     0.581]power trigger gpio_set_one_pin_io_status ret = 0 gpio_read_one_pin_value value = 0 power switch on [     0.591]Hit any key to stop autoboot:  0 clover#

HDMI
EPMI EP952 bridge chip is used.

Gamepad
compatible with Wii Classic Controller. (i.e. I2C)

PG3/PG2 are used to detect controllers. (HIGH: connected)

PF0-PF5 (SDC0)


There are PF0-PF5 and DCDC1 on SIDE-B. They can be used for SDC0.

= Adding a serial port (voids warranty) =

Locating the UART


There are PB0/PB1 (for mainline) and PF2/PF4 (for stock firmware) on SIDE-A.

If you want to use the PF2/PF4 pins using the mainline U-Boot, you'll need to change CONS_INDEX to 1, and set UART0_PORT_F in menuconfig.

= Pictures =

= Also known as =


 * ニンテンドークラシックミニ ファミリーコンピュータ

= Nintendo GPL Violations =

Nintendo uses the A33/R16 in its products. Nintendo provides a source code zipfile on their website, in an attempt to comply with open source licenses, but Nintendo ends up distributing the same binaries that Allwinner has been distributing with it's supposed source code releases before.

U-Boot GPL Violations
In the subdirectory called r16-uboot-fc3061df4dbd4153819b2d2f141d82b88fea51cf, a patched u-boot 2011-09-rc1, the following binaries can be found: ./nand_sunxi/sun8iw3/libnand-sun8iw3 ./nand_sunxi/sun8iw1/libnand-sun8iw1 ./nand_sunxi/sun8iw8/libnand-sun8iw8 ./nand_sunxi/sun9iw1/libnand-sun9iw1 ./nand_sunxi/sun7i/libnand-sun7i ./nand_sunxi/sun8iw9/libnand-sun8iw9 ./nand_sunxi/sun8iw7/libnand-sun8iw7 ./nand_sunxi/sun5i/libnand-sun5i ./nand_sunxi/sun8iw6/libnand-sun8iw6 ./arch/arm/cpu/armv7/sun8iw5/dram/libdram-riot ./arch/arm/cpu/armv7/sun8iw5/dram/libdram ./arch/arm/cpu/armv7/sun8iw8/dram/libdram ./arch/arm/cpu/armv7/sun9iw1/dram/libdram ./arch/arm/cpu/armv7/sun8iw9/dram/libdram ./arch/arm/cpu/armv7/sun8iw7/dram/libchipid ./arch/arm/cpu/armv7/sun8iw7/dram/libdram ./arch/arm/cpu/armv7/sun8iw6/dram/libdram-homlet ./arch/arm/cpu/armv7/sun8iw6/dram/libdram-pad ./drivers/video_sunxi/sunxi_v1/obj_video ./drivers/video_sunxi/sunxi_v2/de_bsp/hdmi/aw/libhdcp ./drivers/video_sunxi/sunxi_v2/de_bsp/de/lowlevel_sun9iw1/libdsi ./drivers/video_sunxi/sunxi_v2/de_bsp/de/lowlevel_sun9iw1/libedp ./drivers/video_sunxi/sunxi_v2/obj_video ./drivers/video_sunxi/sunxi_v3/obj_video

Kernel GPL Violations
In the subdirectory called linux-9ed0e6c8612113834e9af9d16a3e90b573c488ca, a variation of linux-3.4.112, the following binaries can be found: ./arch/arm/mach-sunxi/pm/standby/sun9i_resume1_scatter.scat ./arch/arm/mach-sunxi/pm/standby/sun8i_resume1_scatter.scat ./arch/arm/mach-sunxi/pm/standby/standby.xn ./arch/arm/mach-sunxi/pm/standby/gen_check_code ./modules/aw_schw/libschw ./modules/nand/sun8iw1p1/libnand_sun8iw1p1 ./modules/nand/sun8iw3p1/libnand_sun8iw3p1 ./modules/nand/sun8iw5p1/libnand_sun8iw5p1 ./modules/nand/sun9iw1p1/libnand_sun9iw1p1 ./modules/nand/sun8iw6p1/libnand_sun8iw6p1 ./drivers/video/sunxi/disp/de/lowlevel_sun9iw1/libdsi ./drivers/video/sunxi/disp/de/lowlevel_sun9iw1/libedp ./drivers/video/sunxi/hdmi/aw/libhdcp ./drivers/input/touchscreen/aw5x06/libAW5306 ./drivers/input/touchscreen/gslx680new/gsl_point_id_20131111 ./drivers/input/touchscreen/ft5x/ft_app.i ./drivers/usb/sunxi_usb/usb3/libusb300 ./drivers/media/video/sunxi-fd/lib/libfd ./drivers/media/video/sunxi-vfe/lib/libisp ./drivers/media/video/sunxi-vfe/lib/lib_mipicsi2_v1 ./drivers/media/video/sunxi-vfe/lib/lib_mipicsi2_v2 ./drivers/media/video/sunxi-vfe/test/app_basic

= See also =


 * About OSS included in the Nintendo Entertainment System: NES Classic Edition (Nintendo Classic Mini: Nintendo Entertainment System) console
 * http://mazu-bunkai.com/bunkai-wp/review/4313/
 * http://honeylab.hatenablog.jp/entry/2016/12/19/230144
 * https://www.ns-koubou.com/blog/2016/11/11/nes_classic/
 * https://www.ns-koubou.com/blog/2016/11/16/nes_classic_hdmi/
 * https://www.ns-koubou.com/blog/2016/11/17/doom_on_nes_classic/
 * https://blog.urandom.team/post/my-linux-kernel-on-nesclassic/
 * http://emuonpsp.net/old_news_236.html