= Gateworks Model, Serial Number, and Software Versions = [[PageOutline]] == When Trying to Return a Board to Gateworks If you're requesting to return a board to Gateworks, ***do not open the anti-static bag***. We will be unable to accept your return if the bag has been opened due to ESD exposure. The serial number can be read clearly through the anti-static bag. == Gateworks Serial Number == Gateworks uses a 6-digit 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 (white sticker) * EEPROM info (For All board products) (see below) 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 various Gateworks boot firmware 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 from the device-tree: {{{ echo $(cat /proc/device-tree/serial-number) }}} === 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 }}} 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 }}} == 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 }}}