= Gateworks Model, Serial Number, and Software Versions = [[PageOutline]] == Gateworks Serial Number == Gateworks uses a 6digit serial number to identify products. There are several ways you can determine the serial number for a given product: * 6 digit bar-code on product * EEPROM info (For All board products) === physical bar-code === The serial number should be placed on a small white barcode sticker placed on the PCB somewhere, front or back, etc. Typically it is a 6 digit number such as 999999. '''Please see picture below for example:''' [[Image(serialnumber.jpg,400px)]] === EEPROM: serial number from Bootloader output === The Laguna, Ventana, and Newport product family outputs the board serial number within the few lines that come out of the serial console when the board is powered on. For example, the Ventana bootloader may look like: {{{ U-Boot 2013.04-rc1-00022-g0d7f692-dirty (Apr 09 2013 - 16:38:25) CPU: Freescale i.MX6Q rev1.2 at 792 MHz Reset cause: POR Gateworks Corporation Copyright 2013 Model Number: GW5400-A Manufacturer Date: 04-29-2013 Serial #: 504743 }}} === EEPROM: serial number from Linux === From Linux you can determine the serial number for Laguna and Ventana product families: * U-Boot 2019+ with devicetree kernels - determine from device-tree: {{{ SERNUM=$(cat /proc/device-tree/serial-number) echo $SERNUM }}} * Ventana and Newport 3.10.+ devicetree kernels - determine from device-tree: {{{ SERNUM=$(cat /proc/device-tree/system-serial) echo $SERNUM }}} * Venice, Laguna, Ventana, Newport - determine from the i2c EEPROM device: {{{ b0=$(i2cget -f -y 0 0x51 0x18 | cut -c3-) b1=$(i2cget -f -y 0 0x51 0x19 | cut -c3-) b2=$(i2cget -f -y 0 0x51 0x1a | cut -c3-) b3=$(i2cget -f -y 0 0x51 0x1b | cut -c3-) SERNUM="$((0x$b3$b2$b1$b0))" echo "SERNUM:$SERNUM" }}} === EEPROM: MFG Date from Linux From Linux you can determine the MFG date by looking at certain fields of the EEPROM: {{{#!bash b0=$(i2cget -f -y 0 0x51 0x20 | cut -c3-) b1=$(i2cget -f -y 0 0x51 0x21 | cut -c3-) b2=$(i2cget -f -y 0 0x51 0x22 | cut -c3-) b3=$(i2cget -f -y 0 0x51 0x23 | cut -c3-) printf "%02x-%02x-%02x%02x\n" 0x$b0 0x$b1 0x$b2 0x$b3 }}} This will display in the format Month-Day-Year. == Model Number == The model number is not typically printed on the PCB. The model number can be seen at startup from the console of the board as one of the first few lines: * Ventana and Newport bootloader: {{{ U-Boot SPL 2014.04-00124-gb795e67 (May 16 2014 - 16:38:32) NAND : 256 MiB U-Boot 2014.04-00124-gb795e67 (May 16 2014 - 16:38:32) CPU: Freescale i.MX6Q rev1.2 at 792 MHz Reset cause: POR I2C: ready DRAM: 1 GiB PMIC: PFUZE100 ID=0x10 NAND: 256 MiB MMC: FSL_SDHC: 0 No panel detected: default to HDMI Display: HDMI (1024x768) In: serial Out: serial Err: serial Gateworks Corporation Copyright 2014 Model: GW5400-C MFGDate: 05-16-2014 Serial:612241 GSC: v43 0x7d77 0x11 RTC: 1414768661 DIO0: GPIO1_IO09 (gpio-9) DIO1: GPIO1_IO19 (gpio-19) DIO2: GPIO2_IO09 (gpio-41) DIO3: GPIO2_IO10 (gpio-42) MSATA: disabled RS232: enabled Net: FEC [PRIME], usb_ether }}} * Laguna bootloader {{{ U-Boot 2008.10-mpcore-svn404 (Aug 14 2013 - 15:46:55) CPU: Cavium Networks CNS3000 ID Code: 410fb024 (Part number: 0xB02, Revision number: 4) CPU ID: 900 I2C: ready DRAM: 256 MB Flash: 16 MB Gateworks Corporation Copyright 2010 Model Number: GW2388-SP208-D. Manufacturer Date: 10-18-2012 Serial #: 298717 }}} From Linux you can obtain the model number directly from the i2c EEPROM: * Ventana and Newport (3.10+ device-tree kernel): {{{ BOARD="$(cat /proc/device-tree/board)" echo $BOARD }}} * Ventana and Newport (3.0.35 kernel): {{{ BOARD="$(dd if=/sys/devices/platform/imx-i2c.0/i2c-0/0-0051/eeprom bs=1 count=16 skip=48 2>/dev/null | hexdump -C | head -1 | cut -c62-67)" echo $BOARD }}} * Laguna: {{{ BOARD="$(dd if=/sys/devices/platform/cns3xxx-i2c.0/i2c-0/0-0050/eeprom bs=1 count=16 skip=304 2>/dev/null | hexdump -C | head -1 | cut -c62-67)" echo $BOARD }}} == PCB Revision == Gateworks has revisions of the PCB boards that are the base of the computer board. The PCB revision can be identified from the silkscreen. The revision is the last 2 digits after the dash. For example: 02210119-01 is Revision 1 or Revision B. * -00 = Revision A * -01 = Revision B * -02 = Revision C == Bootloader Version == The Bootloader Version can often be seen at startup from the console of the board as one of the first few lines... Example Below: {{{ U-Boot 2013.04-rc1-00022-g0d7f692 (Apr 09 2013 - 16:38:25) CPU: Freescale i.MX6Q rev1.2 at 792 MHz Reset cause: POR Gateworks Corporation Copyright 2013 Model Number: GW5400-A Manufacturer Date: 04-29-2013 Serial #: 504743 DRAM: 1 GiB MMC: FSL_SDHC: 0 }}} * here the bootloader version can be summarized as '''2013.04-rc1-00022-g0d7f692''' == Software Version == The Software Version can often be seen at end of the bootup process. Gateworks grabs a snapshot of a stable release of OpenWrt and then may apply it's patches and issue their own branches as seen here: [https://github.com/Gateworks/openwrt] Common Gateworks releases will be referenced as the 12.10 branch or the 13.06 branch, or trunk. These can be checked out of SVN here: [wiki:OpenWrt/building#StepbyStepInstructions] OpenWrt typically has a 'banner' that will distinguish which release is being used. Example Below shows the Barrier Breaker Release at Revision r36311: {{{ _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M ----------------------------------------------------- BARRIER BREAKER (Bleeding Edge, r36311) ----------------------------------------------------- * 1/2 oz Galliano Pour all ingredients into * 4 oz cold Coffee an irish coffee mug filled * 1 1/2 oz Dark Rum with crushed ice. Stir. * 2 tsp. Creme de Cacao ----------------------------------------------------- }}} See OpenWrt version history here: [http://wiki.openwrt.org/about/history#timeline] === Kernel Version === The kernel being used can be found through the uname -a command as seen below (3.8.6): {{{ root@OpenWrt:/# uname -a Linux OpenWrt 3.8.6 #1 SMP Wed Jul 10 09:06:50 PDT 2013 armv7l GNU/Linux }}} == Reading GSC version == This can be found two ways: 1. Serial console output at bootup {{{ Gateworks Corporation Copyright 2014 Model: GW5224-B MFGDate: 12-04-2015 Serial:668494 GSC: v46 0xd50b WDT:disabled board temp at 31C }}} 2. The following example will print out the GSC code revision. This example uses the Linux I2C utilities. {{{ i2cget -f -y 0 0x20 14 ;# read GSC revision from register 14 0x16 ;# hex revision value = v22 }}}