User Tools

Site Tools


faqs:general |

This is an old revision of the document!


Table of Contents

Build Questions


(1) I am getting an unexpected error when I try building the Z3 codebase. What can I try?

The Z3 codebase assumes that certain modules are installed in the Linux system. To install all the modules needed by Z3, type the following command in Ubuntu/Debian:

    sudo apt-get install bison flex mtd-utils liblzo2-dev uuid-dev zlib1g-dev libpcre3-dev autoconf \
         autoconf-archive automake automake1.9 automake1.9-doc libtool libtool-doc

In Fedora you would type:

   sudo yum install bison flex mtd-utils mtd-utils-ubi lzo-devel libuuid-devel pcre-devel automake \
        automake17 automake14 autoconf libtool


(2) Will the code build in a 64-bit environment?

Yes, but it is necessary to retrieve some 32-bit libraries that are used in the Z3 codebase. In Ubuntu, you can get these modules by typing:

    sudo apt-get install ia32-libs

In Fedora, you would type:

    sudo yum install glibc.i686


(3) What versions of Linux can I use to build the Z3 codebase?

The Z3 codebase can be built on Ubuntu 10.x or later. Most versions of Fedora should also work.


(4) I get the error message “error:lzo/lzo1x.h: No such file or directory” when building. What should I do?

This can be solved by installing the modules described in Question (1).


(5) I get the error message “pcre.h: No such file or directory In file included from base.h: 24” when building. What should I do?

The error message looks something like this:

libtool: compile:  arm_v5t_le-gcc -DHAVE_CONFIG_H -DHAVE_VERSION_H -DLIBRARY_DIR=\"/opt/webgui/lighttpd/lib\" 
-DSBIN_DIR=\"/opt/webgui/lighttpd/sbin\" -I. -I.. -D_REENTRANT -D__EXTENSIONS__ -D_FILE_OFFSET_BITS=64 
-D_LARGEFILE_SOURCE -D_LARGE_FILES -g -O2 -Wall -W -Wshadow -pedantic -std=gnu99 -MT mod_flv_streaming.lo -MD -MP 
-MF .deps/mod_flv_streaming.Tpo -c mod_flv_streaming.c  -fPIC -DPIC 
-o .libs/mod_flv_streaming.o In file included from base.h:24,
                 from mod_flv_streaming.c:1:
array.h:9:19: error: pcre.h: No such file or directory In file included from base.h:24,
                 from mod_flv_streaming.c:1:
array.h:130: error: expected specifier-qualifier-list before 'pcre'
In file included from base.h:26,
                 from mod_flv_streaming.c:1:
keyvalue.h:56: error: expected specifier-qualifier-list before 'pcre'
keyvalue.h:61: warning: struct has no members
make[5]: *** [mod_flv_streaming.lo] Error 1
make[4]: *** [all] Error 2
make[3]: *** [all-recursive] Error 1
make[2]: *** [all] Error 2
make[1]: *** [lighttpd] Error 2
make[1]: Leaving directory `/home/z3/z3-dm814x/z3-centaurus-dm814x_RPS-20130829/sysapps'
make: *** [sysapps] Error 2

The first potential cause of this is not having the automake tools installed. You should make sure the command described in Question (1) was run.

If it was, this could also be an indicator that a “make clean” is needed. Try typing “make clean” and then try typing “./makeall.sh”.


(6) I get the error message “'UTS_RELEASE' undeclared here” when building. What should I do?

The error message looks something like this:

*

* System Logging Utilities

*

syslogd (SYSLOGD) [Y/n/?] y

  Rotate message files (FEATURE_ROTATE_LOGFILE) [Y/n/?] y

  Remote Log support (FEATURE_REMOTE_LOG) [Y/n/?] y

  Support -D (drop dups) option (FEATURE_SYSLOGD_DUP) [Y/n/?] y

  Circular Buffer support (FEATURE_IPC_SYSLOG) [Y/n/?] y

    Circular buffer size in Kbytes (minimum 4KB) (FEATURE_IPC_SYSLOG_BUFFER_SIZE) [128] 128

    logread (LOGREAD) [Y/n/?] y

      Double buffering (FEATURE_LOGREAD_REDUCED_LOCKING) [Y/n/?] y

klogd (KLOGD) [Y/n/?] y

logger (LOGGER) [Y/n/?] y

etc/config.c:8: error: 'UTS_RELEASE' undeclared here (not in a function)

This is due to bison not being installed. Running the command described in Question (1) will address this.


(7) I get the error message “***** [xdc_configuro] Error 127**” when building. What should I do?

The error message looks something like this:

/home/z3/z3-dm814x/z3-centaurus-dm814x_RPS-20130829/ezsdk/component-sources/omx_05_02_00_38/bin/maketemp_configuro_cmd_c6xdsp.bat: -e: not found

make[3]: *** [xdc_configuro] Error 127

make[2]: *** [dm81xxdspXdc] Error 2

make[1]: *** [omx] Error 2

make: *** [ezsdk] Error 2

The problem is that /bin/sh is not linked to bash. The fix on Ubuntu is to run:

    sudo dpkg-reconfigure dash

and then select “No” when it asks if “dash” should be the system shell (this will cause /bin/sh to be linked to “bash” instead).


(8) When I try modifying code and building I get something like "line 1: syntax error: unexpected '('". What could cause this?

This is an indicator that the host gcc is being used to build the code rather than Z3's cross-compiler. Compiling should be done with the following commands (here giodebug.c is the file to be compiled):

    source z3-env
    ${CROSS_COMPILE}gcc  -o giodebug -DUNIT_TEST giodebug.c

Then when you run

    file giodebug

it should report:

    giodebug: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped


(9) I get "***[clean] Error 127" and "***[osa] Error 2" messages when I try to build the RDK. What can I do?

The full erorr message looks like:

make -fMAKEFILE.MK libs TARGET=clean
make[4]: Entering directory `/home/z3/z3-netra-rdk/z3-netra-RDK-20130513/dvr-rdk/dvr_rdk/mcfw/src_linux'
make -fMAKEFILE.MK -C/home/z3/z3-netra-rdk/z3-netra-RDK-20130513/dvr-rdk/dvr_rdk/../dvr_rdk/mcfw/src_linux/osa/src MODULE=dvr_rdk_osa clean
make[5]: Entering directory `/home/z3/z3-netra-rdk/z3-netra-RDK-20130513/dvr-rdk/dvr_rdk/mcfw/src_linux/osa/src'
make[5]: echo: Command not found
make[5]: *** [clean] Error 127
make[5]: Leaving directory `/home/z3/z3-netra-rdk/z3-netra-RDK-20130513/dvr-rdk/dvr_rdk/mcfw/src_linux/osa/src'
make[4]: *** [osa] Error 2
make[4]: Leaving directory `/home/z3/z3-netra-rdk/z3-netra-RDK-20130513/dvr-rdk/dvr_rdk/mcfw/src_linux'
make[3]: *** [clean] Error 2
make[3]: Leaving directory `/home/z3/z3-netra-rdk/z3-netra-RDK-20130513/dvr-rdk/dvr_rdk/mcfw/src_linux'
make[2]: *** [dvr_rdk_linux_clean] Error 2
make[2]: Leaving directory `/home/z3/z3-netra-rdk/z3-netra-RDK-20130513/dvr-rdk/dvr_rdk'
make[1]: *** [clean] Error 2
make[1]: Leaving directory `/home/z3/z3-netra-rdk/z3-netra-RDK-20130513/dvr-rdk'
make: *** [clean] Error 2
root@nguser-VirtualBox:/home/z3/z3-netra-rdk/z3-netra-RDK-20130513#

This occurred for a customer using Ubuntu 10.4 LTS. They resolved this issue by updating their environment. We recommend you try the same.


Boot/U-Boot/Update Questions


(1) I want to stop in u-boot so I can change some environment variables. How do I do this?

Hold down the space bar and power on the unit. Keep pressing space bar as power comes up. This should cause a stop in u-boot.


(2) I see that the DM8107 and DM8148 software uses a 2-stage boot. Spacebar works to stop the second-stage u-boot. What do I do if I want to stop the first stage u-boot?

Hold down the “s” key and power on the unit. Keep holding the “s” key. This will cause a stop at the Z3-MIN prompt.


(3) I am not getting anything when I try to boot up the module. What can I do to recover it?

You can reprogram the module using BOOTP. This process involves setting up a BOOTP server on your development PC, setting some jumpers on your module, connecting the module to your development PC via the Ethernet, and then turning on the board. Detailed procedures on doing this for DM8107 modules can be found here. Details on doing this for DM8148 modules can be found here. Details on doing this for DM8168 modules can be found here. For details on doing this on other platforms, please contact Z3.


(4) I am trying to bring up a module with BOOTP but it is not responding. What could be the reason?

There are various reasons this can occur. A good place to start is to make sure that TFTP is working properly. Question (1) in the TFTP sections lists multiple things to check to make sure TFTP is working as expected.

One of the most common reasons BOOTP doesn't work is the need for a “-s” in the server_args settings in the tftp config file. In the file /etc/xinetd.d/tftp, you should make sure that the “/home” argument in “server_args” is preceded by a “-s”. An example of a valid tftp file is shown below:

    service tftp
    {
       disable     = no
       socket_type = dgram
       protocol    = udp
       wait        = yes
       user        = nobody
       server      = /usr/sbin/in.tftpd
       server_args = -s /home
    }

Once this change is made, be sure to restart TFTP so this change can take effect.


(5) Is it possible to boot from SD card?

This is currently not supported.


(6) What u-boot versions are used?

In the 810x: 4.04.00.01

In the 814x: 4.01.00.05

In the 816x: 4.00.00.09

For DM368 u-boot versions, please contact Z3 Technology.


(7) During boot-up, we see "ddr_mem=xM wrong in bootargs". Why is this?

This can happen if you are in the process of changing between the EZSDK and RDK but only part of the system got updated. Please be sure to use the Updater in the Web GUI when doing this update. More details can also be found in the manual “Updating from the EZSDK to the RDK.”


(8) During boot-up, we see 'id3_frametype_obsolete'. Why is this?

The full message is:

    BusyBox v1.15.0.svn (2013-07-18 12:30:30 CEST) built-in shell (ash) 
    Enter 'help' for a list of built-in commands. 

    Memory: CMEM 128M , Linux 128M, Total 256M 
    Changed clock rate from 72000000 to 72000000 
    davinci_platform: No internal HD clock available, use external. 
    Preloading gstreamer components 

    (gst-inspect-0.10:697): GStreamer-WARNING **: Failed to load plugin '/opt/gstreamer/lib/gstreamer-0.10/libgstmad.so': /opt/gstreame/lib/libid3tag.so.0: undefined symbol: id3_frametype_obsolete 

This is caused by building the image without the 'gperf' package. To fix this, install gperf and rebuild. On Ubuntu/Debian you can type:

    sudo apt-get install gperf

On Fedora you would type:

    sudo yum install gperf


(9) I have an older EZSDK or RDK build and I am seeing errors after reprogramming the module starting with 'mounting rootfs on / failed' (or mounting on any partition failed), eventually resulting in a lot of 'notify_shm_drv_sendevent failed' messages. I also see a "memory map bin file not passed" message in the boot log. What should I do?

There is a known bug in older EZSDK/RDK releases involving the file /etc/volatile.cache. Check to see if it has a file size of 0. If it does, do the following steps:

    rm /etc/volatile.cache
    sync
    reboot -f

Note – newer EZSDK/RDK releases (after September/2013) have a fix for this issue.


(10) Is it possible to update the firmware by USB?

Yes, this is possible on DM81xx systems. For RDK-based systems the procedure is as follows:

(1) Take a USB drive (must be FAT32 format)

(2) Remove any .img files that exist in the root directory of that USB drive

  • Having other .img files in the root directory might cause the wrong .img file to be updated.

(3) Copy the .img file *as-is* to the USB drive root directory

  • It is important not to rename it (note that this is different from the EZSDK procedure, which requires renaming).

(4) Plug the USB drive into the board and boot the board. You should see something like the following at the beginning of u-boot:

U-Boot 2010.06-dirty (Jul 16 2014 - 21:51:40)

DM385-GP rev 1.0

ARM clk: 1000MHz
DDR clk: 533MHz
L3 clk: 240MHz
IVA clk: 480MHz
ISS clk: 560MHz
DSS clk: 240MHz
DSP clk: 750MHz

I2C:   ready
DRAM:  1 GiB
NAND:  setting chip delay to 15us
HW ECC BCH8 Selected
256 MiB
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@                                                                           @@
@@                                                                           @@
@@                                                                           @@
@@                                                                           @@
@@      @@@        @.   @.          @@@@     @@    @@@@@@   @@@@@@@@@@@      @@
@@      @@@@@     L@@  @@@         @@@@@i  @@@@   @@    @@           @@      @@
@@      @@ @@@.   @@@  @@@         @,  @@    @@   @@    @@           @@      @@
@@      @@   @@   @@@  @@@         @@;@@:    @@   @@    @@          @@       @@
@@      @@    @@  @@@.l@L@         ,@@@@     @@   @@    @@         @@        @@
@@      @@    @@ l@ @@@@ @.        @@ L@@    @@   @@    @@        @@         @@
@@      @@    @@ @@ @@@@ @@       C@   @@    @@   @@    @@       @@          @@
@@      @@   ,@C @@ @@@  @@       C@   @@    @@   @@    @@      @@           @@
@@      @@@@@@@  @@  @@  @@        @@@@@@    @@   @@    @@     @@            @@
@@       @@@@@   @   @    @         @@@,    @@@@   @@@@@@     @@             @@
@@                                                                           @@
@@                                                                           @@
@@                                                                           @@
@@                                                                           @@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Net:   Ethernet clocking: 0x3
<ethaddr> not set. Reading from E-fuse
Detected MACID:84:7e:40:db:33:34
cpsw
Hit any key to stop autoboot:  0 
Booting from NAND and ubifs...
USB:   .
scanning bus for devices... 1 USB Device(s) found
       scanning bus for storage devices... 1 Storage Device(s) found
checking for Z3 software image ...
reading sw-4r7-00245-01_dm8107-gige-20140717-mfr.img
reading software image from: sw-4r7-00245-01_dm8107-gige-20140717-mfr.img ...
reading sw-4r7-00245-01_dm8107-gige-20140717-mfr.img
......................................................................................
......................................................................................
:
:
(continues for many lines)
:
:
......................................................................................
........................
verifying image checksum ...
firmware image detected: DM8107-RDK 2014-07-17
writing firmware, please wait ...
## Executing script at 81000000
Saving Environment to NAND...
Erasing Nand...
Warning: Erase size 0x00002000 smaller than one erase block 0x00020000
         Erasing 0x00020000 instead
Erasing at 0x260000 -- 100% complete.
Writing to Nand... done
firmware has been successfully updated.
resetting ...

There is one important note – we have seen from our experience that not all USB drives are successfully recognized by u-boot. If you see the “reading x.img” message, then you know it is successful. Unsuccessful drives will either hang or will say “checking for Z3 software image” but won’t find anything.

In our tests we successfully used a SanDisk Cruzer Glide 32GB and Kingston Data Traveler.

Note that the Z3-DM816X-PCI2-RPS system comes with with an APP-41 that does not have a USB support, so that software does not support recognizing USB drives in u-boot. If this functionality is needed on a Z3-DM816X-PCI2-RPS release please contact Z3 Technology. All other DM81xx releases support this functionality.

For EZSDK-based systems the procedure is slightly different:

(1) Take a USB drive (must be FAT32 format) and make a directory named “update”

(2) Copy the image to update with to the “update” directory and rename that file “z3.img”

(3) Plug the USB drive into the board and boot the board. You should see something like the following at the beginning of u-boot:

        U-Boot 2010.06 (Oct 15 2013 - 10:26:54)

        TI8168-GP rev 1.2

        ARM clk: 987MHz
        DDR clk: 796MHz
        DSS clk: 691MHz
        DSP clk: 864MHz

        I2C:   ready
        DRAM:  1 GiB
        NAND:  1024 MiB
        Net:   Detected MACID:84:7e:40:af:4a:30
        Ethernet PHY: GENERIC (x001cc915) @ 0x01
        DaVinci EMAC
        Press SPACE to abort autoboot in 0 seconds
        Booting from NAND and ubifs...
        USB:   scanning bus for devices... 1 USB Device(s) found
               scanning bus for storage devices... 1 Storage Device(s) found
        checking for Z3 software image ...
        reading software image from: /update/z3.img ...

        verifying image checksum ...
        firmware image detected: Z3 Netra 09-11-2011.
        writing firmware, please wait ...
        HW ECC BCH8 Selected
        SW ECC selected
        firmware has been successfully updated.
        resetting ...

The same note about selected USB drives being found to work mentioned above in the RDK procedure applies here as well.


(11) Is there a way to update the NAND through NFS?

Yes, there is on the DM81XX products.

For all EZSDK products and all DM816X RDK products, the procedure is as follows:

    (1) [Boot the board from NFS in u-boot (see the User's guide for how to do this)]
        Z3-DM8168-MOD# run boot-nfs
    
    (2) flash_eraseall /dev/mtd5
    
    (3) ubiattach /dev/ubi_ctrl -m 5 -O 2048
    
    (4) ubimkvol /dev/ubi0 -N rootfs -s 128MiB
    
    (5) mkdir /tmp/mynfsmnt
    
    (6) mount -o nolock 192.168.0.6:/home/z3/z3-netra/filesys/fs /tmp/mynfsmnt
          -Note:  "z3-netra" should be replaced by the appropriate project directory 
          -Examples: "z3-dm810x", "z3-dm814x", or "z3-netra-rdk"
    
    (7) mkdir /mnt/ubifs
    
    (8) mount -t ubifs ubi0:rootfs /mnt/ubifs
    
    (9) cp -a /tmp/mynfsmnt/* /mnt/ubifs/.
    
   (10) umount /mnt/ubifs
   
   (11) umount /tmp/mynfsmnt
   
   (12) [Reboot board, stop at u-boot, and enter the following]
        Z3-DM8168-MOD# setenv bootcmd run nand_boot_ubifs
        Z3-DM8168-MOD# saveenv   

For all DM8107 and DM814X RDK products, the procedure is the same as above, except “mtd5” in step (2) should be “mtd6”, and “-m 5” in step (3) should be “-m 6”.


(12) When doing an update with an SD card for the DM368 products, what SD card can be used?

Any SD card 32GB or less can be used.


TFTP/NFS Server Questions


(1) I set up the TFTP server but it is not responding at boot-up. What can I check?

First of all, we recommend trying the instructions in the latest User's Guide, which should have detailed instructions on setting up the TFTP server. It should be in a section titled “Method 2: Running Your Code through TFTP/NFS” (if your User's Guide does not have this section, please contact Z3 Technology).

If you try that sequence and TFTP is still not working, here are items, from our experience with previous customers, that you can check:

(a) Is the Ethernet connected well to both the Z3 Module and the TFTP server (check the link lights on both)?

(b) Check the netmask of the Z3 Module set in u-boot. Is it equal to the netmask of the TFTP server? (Default value = 255.255.0.0)

(c) Check the IP address of the Z3 Module set in u-boot. Is it one that can communicate with the TFTP server based on the netmask?

  • For example, if the netmask is 255.255.0.0 and the TFTP server IP address is 192.168.0.6, then the Z3 Module can be set to an IP address of 192.168.x.y, where x.y is any value except “0.6”.

(d) Is there anything else on the network that might have the same IP address as the Z3 Module or the TFTP server that could be causing a conflict?

(e) Is there a firewall on the TFTP server PC that is turned on? (If so, you need to turn it off).

(f) Check the value of serverip in the u-boot parameters. Does it equal the IP address of the TFTP server? (Default value = 192.168.0.6).

(g) Was an “images” directory link set up and does the file uimage exist in that directory?

(h) If you take serverargs in /etc/xinetd.d/tftp and combine that with tftp_root in the u-boot arguments, does it point to the images directory?

(i) Did you start the tftp server? (In Ubuntu, this is done with a “sudo /etc/init.d/xinetd start”)

(j) If you made changes to /etc/xinetd.d/tftp, did you start the tftp server after making those changes?

(k) Is the permission of your /tftpboot directory set to “777” and the owner set to “nobody”?


(2) I set up the NFS server but it is not responding at boot-up. What can I check?

First of all, we recommend trying the instructions in the latest User's Guide, which should have detailed instructions on setting up the NFS server. It should be in a section titled “Method 2: Running Your Code through TFTP/NFS” (if your User's Guide does not have this section, please contact Z3 Technology).

If you try that sequence and NFS is still not working, here are items, from our experience with previous customers, that you can check (note: items (a) through (e) are identical to the items in Question (1)).

(a) Is the Ethernet connected well to both the Z3 Module and the NFS server (check the link lights on both)?

(b) Check the netmask of the Z3 Module set in u-boot. Is it equal to the netmask of the NFS server? (Default value = 255.255.0.0)

(c) Check the IP address of the Z3 Module set in u-boot. Is it one that can communicate with the NFS server based on the netmask?

  • For example, if the netmask is 255.255.0.0 and the NFS server IP address is 192.168.0.6, then the Z3 Module can be set to an IP address of 192.168.x.y, where x.y is any value except “0.6”.

(d) Is there anything else on the network that might have the same IP address as the Z3 Module or the NFS server that could be causing a conflict?

(e) Is there a firewall on the NFS server PC that is turned on? (If so, you need to turn it off).

(f) Check the value of nfsserver in the u-boot parameters. Does it equal the IP address of the NFS server? (Default value = 192.168.0.6).

(g) Was a “filesys” directory link set up?

(h) Does the IP address in the line added in /etc/exports match the IP address set in nfsserver in the u-boot environment?

(i) Does the value of nfs_root in the u-boot environment point to the filesys link that was set up?

(j) Did you start the nfs server?

(k) If you modified the exports file, did you remember to restart the nfs server after making your changes?


ZFinder Questions


(1) What OS's does ZFinder run on?

ZFinder will run on Windows XP and any Windows OS after that – including Windows Vista, Windows 7, and Windows 8.


Running the Decoder


(1) The board boots up and I type the IP address in the browser, but I can't get the GUI to appear. What can I do?

Most of the time this is due to (a) A faulty Internet connection, or (b) An issue with the IP address on the board or PC. You can check the following:

(a) Is the Ethernet connected well to both the Z3 Module and the PC (check the link lights on both)?

(b) Check the netmask of the Z3 Module set in u-boot. Is it equal to the netmask of the PC? (Default value = 255.255.0.0)

(c) Check the IP address of the Z3 Module set in u-boot. Is it one that can communicate with the PC based on the netmask?

  • For example, if the netmask is 255.255.0.0 and the PC IP address is 192.168.0.6, then the Z3 Module can be set to an IP address of 192.168.x.y, where x.y is any value except “0.6”.

(d) Is there anything else on the network that might have the same IP address as the Z3 Module or the PC that could be causing a conflict?

(e) Is there a firewall on the PC that is turned on? (If so, you need to turn it off).


(2) We are able to see the GUI / run the decoder, but when we try it with the encoder, we are not receiving the stream. What could the reason be?

90% of the time, the issue is with the value typed in for the URL on the decoder. Some customers type in the IP address of the encoder board here. This is not correct. The value that needs to be typed in here is the IP address which the encoder is streaming to. For example, let's say that an encoder board with IP address 192.168.81.68 is streaming to a decoder board with IP address 192.168.0.200. On the encode side, the URL could be set to

    udp://192.168.0.200:8888

On the decoder side, the URL must also be set to:

    udp://192.168.0.200:8888

This is also true for RTP streaming and also true for multicast IP addresses.


(3) The sample decoder demo defaults to a 2x2 layout. How can I change this to 1x1 or some other configuration?

This can be changed in the source file $PRJROOT/z3apps/rdk/rdk_demo/demo_vdec_vdis.c. In line 79 of this file, change:

    int demoLayout = DEMO_LAYOUT_MODE_4CH_PIP

to:

    int demoLayout = DEMO_LAYOUT_MODE_1CH


(4) We are handling NTSC display on our own board and have observed that, when we display NTSC on SDI, a green bar 3 lines wide appears at the top. This bar does not occur for PAL and it seems to occur only on data we capture. What is causing this?

These 3 lines are video blanking data and are unique to NTSC. Seeing these lines is possible if you are displaying the 480 lines of NTSC on a 488 line monitor. The recommended solution is to make the display buffer bigger and move the portion that is displayed down 3 lines.


(5) There is an .mpg file that won't play back. Is there anything we can try?

Try renaming “.mpg” to “.ts.”


(6) I am running an encoder and decoder end-to-end at 1080p60. Is there anything I can do to improve the latency and text quality?

One thing to make sure of when decoding 1080p60 (or any progressive resolution) is that the display mode is set to 1080p60. If display mode is set to 1080i, this can cause an unnecessary increase in latency and can also cause quality degradation (most visible with sharp edges such as text). If 1080p60 display mode is set, the best possible latency and quality in the system will result.


Running the Encoder


(1) The board boots up and I type the IP address in the browser, but I can't get the GUI to appear. What can I do?

Most of the time this is due to (a) A faulty Internet connection, or (b) An issue with the IP address on the board or PC. You can check the following:

(a) Is the Ethernet connected well to both the Z3 Module and the PC (check the link lights on both)?

(b) Check the netmask of the Z3 Module set in u-boot. Is it equal to the netmask of the PC? (Default value = 255.255.0.0)

(c) Check the IP address of the Z3 Module set in u-boot. Is it one that can communicate with the PC based on the netmask?

  • For example, if the netmask is 255.255.0.0 and the PC IP address is 192.168.0.6, then the Z3 Module can be set to an IP address of 192.168.x.y, where x.y is any value except “0.6”.

(d) Is there anything else on the network that might have the same IP address as the Z3 Module or the PC that could be causing a conflict?

(e) Is there a firewall on the PC that is turned on? (If so, you need to turn it off).


(2) I am running UDP encode but cannot see a picture in VLC. What can I check?

Generally this is an issue of making sure that the address being streamed to matches the value entered in VLC. You can check the following:

(a) Does the IP address set in “Dest Address” in the encoder equal the IP address of the PC running VLC?

  • Or, if a multicast address is being used (for example, 225.1.1.1), does this match the address entered in VLC?

(b) Does the port number in “Dest Port” equal the value entered in the URL for VLC?

(c) Does the video coming out of the source match the resolution in the encoder settings?

(d) Is the PC fast enough to handle 1080p decode on VLC?

(e) Is version 1.1x or later of VLC being used?

(f) Did you remember to type “udp” and “@” in the URL for VLC? (Both are needed).


(3) I am running RTP encode but cannot see a picture in VLC. What can I check?

The important thing here is to make sure the value of “Dest Port” matches the value which the User's Guide says to use (generally 5004). The User's Guide will say which value of Dest Port matches the sample SDP file provided by Z3.


(4) I have the encoder connected but am seeing what looks like bad quality on the output. What could be wrong?

(a) First, make sure the source is clean. Connect the video source directly to a monitor and confirm there are no issues.

(b) Second, try a different set of cables. More than a few times the issue turns out to be bad cables.

(c) Third, try a different source if possible. This will help determine if there is an issue between the source and the Z3 encoder.

(d) Fourth, try connecting to a PC with VLC and streaming using RTP or UDP. If the VLC plays clean then there is likely a decoder issue.

(e) Fifth, if a Z3 unit is being used for encode and another for decode, try switching them.

If you try all of the above and still encounter issues, please contact Z3.


(5) What settings can I use to get the lowest latency possible?

The two settings that directly impact latency are “Maximum Delay” (called “Video Burst Size” on the DM368) and “Number of B-frames”. For the lowest possible latency, “Maximum Delay” should be set to 150, and “Number of B-frames” should be set to 1 (which disables B-frames).

RTP is also lower latency than UDP, so you should use RTP if possible.

Also, if you are streaming to VLC, you can reduce latency on the decode side by adjusting the network caching value. By default, this is set to 1000ms. You can lower this to as low as 200ms. To do this, go to the following:

  • VLC → Tools → Preferences → Show Settings (ALL) → Input / Codecs → Network caching (ms)


(6) When we encode in composite, we see artifacts in the top few rows of the picture. The rows are black with spots of white that seem to track the picture. What are these?

These are most likely Macrovision rows. Some DVD players include this in the output while some don't. You can confirm this by seeing if the same artifacts occur with component input. If they don't, then this is very likely Macrovision data. Using a different DVD player may address this issue. Another alternative is to modify the application to crop those lines. Note, however, that for DVD players that do not output these lines, cropping can cause actual valid video data to be cut out of the picture.


(7) What version of VLC can I run with Z3's encoders?

In general Z3 recommends using the latest version of VLC (v2.0.7) to ensure you are getting maximum functionality and maximum performance.

The earliest version of VLC that will work with Z3's encoders is version 1.00. Using version 0.99 has been shown to produce artifacts in certain cases. The VideoLan website describes version 1.00 as follows:

  • This major release introduces many new features, new formats and new codecs to the VLC multimedia framework and fixes a very high number of bugs that were present in the 0.9.x or 0.8.6 versions.

Based on this, an upgrade to at least 1.00 is advised.

Note that an issue has been observed with displaying the proper frame rate for .ts files (earlier versions may show double the expected frame rate in the statistics section). v2.1.3 and later do not show this issue.


(8) I am encoding and I want to take audio from HDMI but I only see options for "Analog" and "Channels 1+2/3+4/5+6/7+8". What do I choose?

The “Channels 1+2/3+4/5+6/7+8” is for digital audio, so in this case you would choose “Channels 1+2”.


(9) The decoder we work with has a 245,760 macroblock per second limit. How can we be sure this is met?

You can ensure this by using any resolution / frame rate except 1080p60. For example, 1080p30 or 1080i30 produces (1920 *1080 * 30) / 256 = 243,000 macroblocks per second, which is just under the limit.


(10) Is 29.97Hz / 59.94Hz encode supported? How do I specify this?

Yes, this is supported. To encode at those frequencies, either specify “Follow input”, which causes capture at whatever rate the video data is coming in at, or specify “30” for 29.97 or “60” for 59.94. In that case the system will autodetect that the input is actually 29.97 / 59.94 and encode at that rate.


(11) Can the MPEG-2 encoder encode Main Profile at High Level?

Yes.


(12) What NAL units does the H264 encoder on Z3's systems use?

The encoder uses NAL units 1, 5-8, and 28.


(13) There are no start codes in the H264 streams generated by Z3. Is this to be expected?

Yes. This is in conformance with RFC3984, which states that start codes do not apply to RTP-encapsulated bitstreams. Annex B in RFC3984 makes a provision for including optional start codes. Z3's decoders can handle streams with start codes in the event Annex B is being used.


(14) When are PPS headers sent? Can we assume they only occur at the beginning of each frame?

Yes. PPS headers are only sent at the beginning of each frame.


(15) What SEI types are generated in Z3 streams?

buf_period and pic_timing are generated in the SEI headers in Z3 streams.


(16) Can you encode 2 channels from the same source?

This is possible to do on the RDK.

If encoding progressive, this can be done by duplicating CH1 to create a CH3 (and/or CH2 to create a CH4). After doing this, CH1 and CH3 can be used to encode the same progressive input at different resolutions, bitrates, frame rates etc.

If encoding interlaced, a splitter is required. In that case the 2 outputs on the splitter would go to CH1 in and CH2 in.


(17) I encoded to a file at 60fps, but when I try playing back it is playing back at 30fps. Why is that?

The most common cause for this is the file was saved in raw .h264 format. Raw .h264, while containing video data, does not contain any timing information. For this reason a decoder will often use a default value of 30fps. To accurately playback at 60fps, you need to save to a file format that has timing information, such as .ts or .avi.


(18) I can stream to VLC but it appears that audio is being clipped. What should I check?

The first thing to check is the VLC audio settings. If you bring VLC up its default settings often have audio at a low level so you need to manually increase it.


(19) I am using the Z3 encoder to record 60fps content into a .ts file. VLC will play it back, but it shows the frame rate as 120fps. Why is this?

This has been observed as an issue in certain versions of VLC. The latest versions (v2.1.3 or later) do not have this issue.


(20) We are encoding using UDP and are observing NULL packets at times. Is this expected?

It is possible for NULL packets to occur to meet the overall channel rate.


(21) How do you change the TTL value when encoding multicast?

This can be specified with an additional “/” followed by the desired TTL at the end of the IP address. For example, to specify a TTL of 2, you could use the destination IP address of “225.1.2.3/2”. A default value of 1 is assumed.


The “right” bitrate can vary greatly depending on content used and customer expectation. With that in mind, here is a general set of bitrates we've found to work well:

Resolution prog / int Frame Rate “Bit Saver” Average Quality Very Good Quality
2160p (3840×2160) prog 30 fps 8Mbps 15Mbps 30Mbps
1080p (1920×1080) prog 60 fps 3Mbps 6Mbps 12Mbps
1080i (1920×1080) int 30 fps* 3Mbps 6Mbps 12Mbps
XGA (1024×768) prog 60 fps 3Mbps 5Mbps 8Mbps
720p (1280×720) prog 60 fps 2Mbps 4Mbps 7Mbps
PAL (720×576) int 30 fps* 500Kbps 2Mbps 4Mbps
NTSC (720×480) int 30 fps* 500Kbps 2Mbps 4Mbps
VGA (640×480) prog 30 fps 300Kbps 1Mbps 3Mbps
CIF (352×288) prog 30 fps 300Kbps 512Kbps 800Kbps

* = 30 frames per second, or 60 fields per second
prog = Progressive
int = Interlaced


(23) I am running the encoded bitstream to FFMPEG and am seeing a lot of "AAC bitstream not in ADTS format and extradata missing" errors. What does this mean?

This is typically indicative of packet loss in the network. Please check your network to make sure it is not being overloaded. This message is discussed in the following link:


(24) What is the optimal system to use to minimize ASI latency? What are the optimal settings to use?

The MVE-40, MVE-100, DM8169-4CH-RPS, and DM8169-VI-RPS (RDK) are the best products to use for minimal ASI latency. End-to-end latency of 1.3 seconds was observed here in testing. The amount of latency will vary depending on the decoder that is used.

To minimize latency, B-frames should be set to 0 and Video Delay should be set to as low a value as possible (150 was used in tests here).


(25) Do Z3 encoders support Closed GOPs?

Yes, Z3's encoders all generate Closed GOPs.


RTMP / Streaming Questions


(1) Does Z3's RTMP software work with ustream?

Yes, it does. A write-up on connecting with ustream is available. For details, please contact Z3 Technology.


(2) I am trying to use RTMP with Wowza using IP address 225.1.2.3 but it is not working. Why not?

When using Wowza in RTMP mode, a unicast address is required. Wowza supports multicast addresses in other modes, but not in RTMP mode.


(3) Are there any known restrictions to working with Adobe Media Server?

No. There are no known restrictions to working with Adobe Media Server. Tests here ran with no issues.


(4) What can I do reduce the latency using Wowza?

In our tests, latency was reduced from 5.5s to 1.2s by going to Server - Performance Tuning - Java Settings and changing “Java Heap Size” to “Production Level” and “Java Garbage Collection” to “Concurrent collector.” Screenshot below:

wowza_4.0.1_java_production.jpg


(5) I am trying to stream to Wowza but nothing is getting through. What could be the reason?

The first thing to check is the firewall settings of the network – are the ports used for RTMP being blocked by a firewall? If so, modify the firewall settings to allow these ports to be used.


Debugging Questions


(1) How do you set up GDB?

To setup GDB, you need to do 3 steps (steps w/ EZSDK shown here):

(a) Copy the threaddb libraries to the host

    cp -a $PRJROOTtoolchain/codesourcery_arm2009q1-203/arm-none-linux-gnueabi/libc/lib/libthread_db* $ROOTFS/fs/lib

(b) Create a .gdbinit file in your build directory

    cd $PRJROOT/ezsdk/component-sources/omx_05_02_00_46/src/z3

    set solib-absolute-prefix /home/z3/projects/z3/DM8169-VI-RPS/filesys/fs
    set solib-search-path /home/z3/projects/z3/DM8169-VI-RPS/filesys/fs/lib:/home/z3/projects/z3/DM8169-VI-RPS/filesys/fs/usr/lib:/home/z3/projects/z3/DM8169-VI-RPS/filesys/fs/opt/gstreamer/lib:/home/z3/projects/z3/DM8169-VI-RPS/filesys/fs/opt/gstreamer/lib/gstreamer-0.10
    cp -a $PRJROOTtoolchain/codesourcery_arm2009q1-203/arm-none-linux-gnueabi/libc/lib/libthread_db* $ROOTFS/fs/lib

(c) Find the executable and run it

    find ../../bin/ -name z3_v4l2\*.xv5T

         ../../bin/z3_v4l2/bin/ti816x-evm/z3_v4l2_a8host_debug.xv5T

    arm-none-linux-gnueabi-gdb ../../bin/z3_v4l2/bin/ti816x-evm/z3_v4l2_a8host_debug.xv5T

         target remote 192.168.81.68:5004

Also, the following information on post-mortem multithread debugging may be helpful:


(2) gdb doesn't seem to be coming up. What could be the reason?

The gdb in the toolchain does have a dependency on 32-bit python 2.6 libraries. You may need to link to them. You can verify this is the issue if you see the following:

    arm-none-linux-gnueabi-gdb
    arm-none-linux-gnueabi-gdb: error while loading shared libraries: libpython2.6.so.1.0: cannot open shared object file: No such file or directory

If you see this and you are on 32-bit Ubuntu, you should point to the newer python to get gdb to come up:

    sudo ln -s libpython2.7.so.1.0 /usr/lib/libpython2.6.so.1.0


(3) Is there support for sshd?

The sshd replacement “dropbear” is included in $PRJROOT/sysapps/dropbear-0.52. You can run it with the command:

    /usr/sbin/dropbear -E


(4) I'm having issues trying to run dropbear. What could the issue be?

The issue is probably missing RSA or DSS keys. You can verify this by running dropbear with the -E option:

    root@arago:~# dropbear -E -F -a
    [1618] Dec 02 19:03:59 Failed reading '/etc/dropbear/dropbear_rsa_host_key', disabling RSA
    [1618] Dec 02 19:03:59 Failed reading '/etc/dropbear/dropbear_dss_host_key', disabling DSS
    [1618] Dec 02 19:03:59 premature exit: No hostkeys available

The solution to this is to type the following:

    root@arago:~# mkdir /etc/dropbear
    root@arago:~# dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key
    root@arago:~# dropbear

After doing this, you should see dropbear running with the ps command.


(5) Is there a way to get status of channels when using MCSENC?

You can do this by using the “status” command. You can type:

    status item=ENCODERS

This will cause a printout of status for every encoder instance:

    +channel <id> URL <dest> frames <framecnt>

By checking <framecnt> you can tell if a particular channel has stopped.

Alternately, you can type:

    status item=i

This will print debug information about each instance to the file /tmp/debug.txt (a lot of information is printed out, so this should be used sparingly). In newer versions, this file is moved to /tmp/debuglog.d/current.


(6) Where are log files / error message files stored?

/tmp


(7) A problem occurred. What files can I send to Z3 to help diagnose the problem?

Three files are useful:

(1) Screenshots of the settings used for the encode/decode (and the output to the console when running the session)

  • You can also type “echo > /tmp/diag”, and then run the commands, and then send the file “diag”

(2) The file /tmp/debug.txt (in newer versions, this file is moved to /tmp/debuglog.d/current)

(3) If an encode is being done, the file /tmp/mcsenc.log

In some cases, the following may also be useful:

(4) The boot log

(5) The contents of dmesg

For EZSDK users, it can also be useful to run TI's “loggerSMDump.out” M3 firmware log utility and send the resulting log file. This utility is included in EZSDK releases and can be extracted using the following steps:

    [Go to $PRJROOT]
    source z3-env
    cd $PRJROOT/filesys/fs
    tar xvzf ../../ezsdk/filesystem/ezsdk-dm816x-evm-rootfs.tar.gz usr/share/ti/ti-uia

The above extracts the utility “loggerSMDump.out”. Details on running it can be found in:

If there is an issue while booting, you can increase the log level at boot-up by typing the following commands in u-boot and then rebooting:

    setenv console ttyO2,115200 loglevel=8
    saveenv


(8) How can I save a .ts file to send to Z3 Technology for debugging purposes?

This can be done using VLC. To use VLC to save to a .ts file, do the following:

(1) Open VLC on a PC that the Z3 unit is streaming to.

(2) Select “Media - Convert / Save” (for VLC running on Windows, this is “File - Convert / Save”).

(3) You should see “File”, “Disc”, “Network”, and “Capture Device” tabs. Click on the “Network” tab.

(4) In this tab, enter the same URL you would use to receive the stream. For example, if you are streaming using udp:

  udp://@192.168.0.6:5004

(5) Click on the “Convert/Save” button at the bottom.

(6) This will bring up the “Convert” Window. In this Window, click on “Browse” and specify the name of the file to save to.

(7) Click on the “Dump raw input” checkbox at the very bottom of the “Convert” Window.

(8) Click “Start”

The .ts file will start saving – you should see the file gradually growing.

(9) Either click the “Stop” button or select “Playback - Stop” to stop saving the stream.

(10) Exit VLC.


(9) For debugging purposes I want to turn off the software watchdog. How do I do this?

In both the RDK and EZSDK for the DM81xx, the watchdog enable is currently done in /opt/webgui/server.sh

To disable the watchdog, you need to:

(1) Comment out the watchdog task in /opt/webgui/server.sh

  # watchdog /dev/watchdog &

(2) Run 'sync' to make sure your changes are saved

(3) Reboot the board

  reboot -f


Developer Questions


(1) I want to make changes in the web GUI. Where do I start?

The web server log, HTML and Javascript are in:

  • z3apps/webgui/gui/web

The Javascript files (*.js) take care of dynamic aspects (such as disabling options based on the current configuration and populating dynamic listboxes), as well as transferring the form values to the user interface.

If you add a new item to the web interface, you will need to add code to one of the following functions:

  • encoder.js:encoder_init()
  • decoder.js:decoder_init()
  • system.js:system_init()

to transfer the configuration parameter to the HTML DOM.

All configuration accesses go through the file:

  • z3apps/webgui/gui/web/cgi-bin/control.cgi

If you want to add a configuration item, add it to the appropriate variable:

  • CONFIG_ARGS_DEC
  • CONFIG_ARGS_ENC
  • CONFIG_ARGS_COMMON


(2) What web server do you use?

We use lighttpd.


(3) I am using a DM816X-MOD-35 and I want it to work with SATA. What do I need to do?

The most important thing (as noted in the DM816X-MOD Hardware Specifications) is you need to make sure that the MOD-35 is configured as a Root Complex (“-RC”). The -RC boards include a 100MHz oscillator to act as the PCIe clock. This is also used to drive the SATA.

If the MOD-35 is configured as an -EP board, it is still possible to connect with SATA if an external oscillator is used to drive the SATA interface.


(4) We are developing our own video capture using Z3's system as a reference. We don't seem to be capturing any frames. Where would be a good place to start debugging?

The first thing we recommend checking is that the board ID is set to whichever Z3 application board was used as the reference point. For several customers fixing this was the key step to getting video frames coming in. Details on setting board ID can be found the RDK Developer's Guide. For information on setting this on an EZSDK system, please contact Z3.


(5) On the RDK I want to rebuild just the Z3 application code without rebuilding the entire OS/RDK. How do I do this?

This can be accomplished through the following commands:

    cd $PRJROOT/dvr-rdk
    make dvr_rdk_linux dvr_rdk_bios6 install


(6) We are developing our own video path. We are seeing some unexplained noise in the input. What could be the potential cause?

One common cause is configuring the VIP for falling edge when it should be rising edge.

On the DM816X, this information can be found in:

    ./arch/arm/mach-omap2/ti81xx_vpss.c

More information can also be found on the following TI Wiki page:


DM365/DM368 Specific Questions


(1) What protocol does ztermserv use?

The default mode is “telnet” mode, where any 0xff character received by TCP is interpreted as the beginning of a telnet IAC command sequence.

It is also possible to set a clearchannel mode, where the TCP data is not altered in any way.


(2) I am losing data somewhere in my serial interface. How can I debug this?

You can try using netcat. For example, you can run netcat on a Linux PC as a server on TCP port 7777:

    nc -l 7777

Then run netcat on a Linux PC as a client, conncting to the ZTermSrv server at 192.168.0.65 TCP port 9999:

    nc 192.168.0.65 9999


(3) Can you unicast to 2 addresses?

Yes you can, by specifying multiple “-v” options. For example:

    ./rtptx -v rtp://192.168.0.6:8888 -v rtp://192.168.0.6:8900

For more details, please see the “RTPTX User's Guide (v1.3)” (DOC-USR-0007-01).


(4) How do you access GPIOs?

There is a “giodebug” utility available which can read or write GPIOs.

When working with GPIO, it is important to keep in mind that some pins have multiple functions, so handling pinmuxing properly is a must. The best place to get started with details on pinmuxing is Section 9.12.2 (“Pin Mux”) in the DM36X ARM Subsystem Guide (SPRUFG5A):


(5) Is there OSD support?

Yes. There is an encode sample app with OSD support. To run it, type the following:

    cd /opt/dvsdk
    ./loadmodules_sd.sh
    ./encode -v /tmp/out.264 --osd -y 1

There is full documentation for the encode command in the file

    /opt/dvsdk/encode.txt

on the target.


(6) Is encode of black and white content supported?

Yes. The latest versions of Z3's DM368 software support this.


(7) How can I check the clock rate being used?

You can look at /proc/davinci_clocks.


(8) Does the DM368 support resizing to any resolution in the drop-down menus?

Yes. The DM368 supports resizing to any resolution shown in the drop-down menus.


(9) Is there any way to control the audio volume?

Yes. There is an existing API to set analog input volume at startup time:

    dvsdk/dvsdk_2_10_00_17/dmai_1_21_00_10/packages/ti/sdo/dmai/linux/Sound_alsa.c

    /** @brief Gain between 0-100 of the left channel */
    Int32                leftGain;

    /** @brief Gain between 0-100 of the right channel */
    Int32                rightGain;

There is no API for digital volume – this could be implemented by the customer by using a saturating 16-bit signed multiplication on all audio samples.


(10) Is there a way to do audio mute on rtptx?

There is no command line option for this. However, there is example code in:

  • dvsdk/dvsdk_2_10_00_17/dmai_1_21_00_10/packages/ti/sdo/dmai/linux/Sound_alsa.c:setMixerVolume()

this shows how to set the ALSA mixer volume. Setting this to 0 would be the equivalent of muting.


(11) How do you set pixel aspect ratio?

rtptx has a “–videopar” argument you can use. For example, for PAL widescreen, you can set:

    --videopar=16:11

and for NTSC widescreen you can set:

    --videopar=40:33


(12) What is EXP_RST connected to?

It is connected to PWRCTRLIO5 (see dm368_board.c). Drivers in u-boot and the linux kernel for this pin can be found in:

    kernels/linux/arch/arm/mach-davinci/prtcss.c
    u-boot/u-boot-1.3.4/board/davinci/dm365_evm/prtcss.c


(13) What creates the reset signal to the 8700C Ethernet PHY chip?

The external reset to the 8700C is provided by the MSP430. The MSP430 generates reset based on 2 inputs: One is the reset signal generated when the reset button on the board is pushed, and another is based on a circuit which checks the current Vcc, and asserts reset as long as Vcc is below a certain level.


(14) What chip select(s) does the DM368 MOD use with NAND? Would there be a conflict if we used CE1?

The DM368 MOD uses 1 chip select with the NAND – CE0. There would be no conflict with CE1.


(15) On the DM368 module, where is the EMIF set up for the FPGA?

You can check the PINMUX2 register at address 0x1c40008:

    /opt/dvsdk # devmem 0x1c40008
    0x00001855

The oe# and we# signals are used by the NAND.


(16) Is there a way to select the PID or program to demux in tsplayer?

Yes. You can use the “-p” (or “–program”) option in tsplayer to select the program, and “–pids” to select specific PIDs to demux.


(17) How do you modify files in the DM368 file system?

To change files on the DM36x filesystem, you need to make it writable first:

    mount -o remount,rw /
    
    < Make changes by vi on the board or by copying files >

    mount -o remount,ro /


(18) How do you change the timeout value for decode?

The timeout command can be found by running

    grep -e 'read -t'  /opt/dvsdk/*.sh

See question (17) on making the DM368 file system writable so changes can be made.


(19) What size SD cards are supported?

Any firmware released in 2012 or later supports up to 32GB.


(20) Are mini-SD cards (with adapter) supported in the SD card slot?

Yes they are.


(21) After updating the firmware and trying to write the configuration we get a "mounting /dev/mtdblock5 on /tmp/config failed" message. What can we do?

Somehow mtd5 got in an unknown state in the update process. You can get mtd5 back in a known state by typing:

    flash_eraseall /dev/mtd5


(22) I have a DM368-SDI-RPS. When switching from encoder to decoder mode, the decoder runs, but it shows a black screen with audio only.

The DM368-SDI-RPS and DM368-VI-RPS require a power cycle between changing from encoder to decoder mode. Note that a power cycle is not needed for the DM368-RPS.


(23) I am getting a "failed to encode video buffer" message. What could be causing this?

This can happen if high bitrates are used for sub-D1 resolutions (for example, > 1Mbps for CIF). To avoid this,use bitrates less than 1Mbps for sub-D1 resolutions.

It could also potentially happen for very high bitrates for D1.

A thread on this issue can be found on E2E at http://e2e.ti.com/support/embedded/multimedia_software_codecs/f/356/t/128489.aspx


(24) We are seeing an 'hCapture failed' message. What could be causing this?

The full message is:

    zrecorder: linux/Capture.c:1196: Capture_get: Assertion `hCapture' failed. 

This is an indicator that valid video input was not detected. Please recheck your video sources.


(25) Is encode of 29.97 / 59.94Hz content supported?

Yes it is. The DM368-based products will automatically detect 29.97 and 59.94 Hz and encode at that rate.


(26) How do I reconfigure startup behavior?

Behavior at startup is controlled in /root/.profile on the board filesystem.


(27) What are the specifications of the audio RCA inputs on the DM368 APP board?

The specifications are:

  • Input level: 1.4Vrms (Zin=2K) (4Vpp)
  • Line level, 6dB of attenuation

These specifications and additional details can be found in the DM368 HW datasheet from TI.


(28) We are using our own hardware with its own Ethernet chip. It appears that the Ethernet packets are being corrupted somehow when we send RTP. What should we look at?

This points to the Ethernet switch getting overloaded. You can try adjusting the delay between packets with the parameter “–interpacketgap”. The default value is 150 microseconds.

Another option is to use TS, which paces out the output.


(29) When decoding DVB-ASI, how do you select which program to decode?

Use the “port” value to select. “1” is the first program, “2” is the second program etc.


(30) On the DME-01, what inputs/outputs are used for DVB-ASI decode / HD-SDI output?

The middle BNC connector is used for ASI In (same as “SDI In”). The left BNC connector is used for SDI Out (same as “ASI Out”).


(31) There are 3 different ubl.bin files generated. How do I know which one to use?

ubl_DM36x_nand_270_243.bin is for nominal timing for the DM365.

ubl_DM36x_nand_297_270.bin is for 720p30 capable timing for the DM365.

ubl_DM36x_nand_432_378.bin is for the DM368.


(32) Is HDMI display supported on the DM365/DM368?

Yes. RTPRX supports HDMI output. Select the “component” option to cause video data to go to the HDMI. It may also be necessary to run the HDMI driver. This can be done by typing the following before running RTPRX:

    /root/ad9889 > /dev/null &


(33) How do I change the MAC address on my DM365/DM368 unit?

The MAC address can be changed in u-boot by doing the following steps:

(a) Get the u-boot prompt by pressing the spacebar within 3 seconds of powering on the board.

(b) Through the serial interface, type “setenv ethaddr XX:XX:XX:XX:XX”, where “XX:XX:XX:XX:XX” is the MAC address you want to assign.

(c) Confirm the value is what you want by typing “printenv ethaddr”.

(d) Save the values by typing “saveenv”.


(34) What file systems are supported on the DM365/DM368?

VFAT and EXT3 are supported.


(35) What is the maximum sizes of flash drives connected to DM365/DM368?

For VFAT, the limit is 32GB. For EXT3, the limit is 2TB.


(36) Is it possible to configure the DM368 system so that it autostarts after reset?

Yes it is. To do this, save the settings while an encode is running.


DM814X/DM816X-specific questions (EZSDK)


(1) How do I specify the timing for 720p59.94 display?

The following will work for 720p59.94:

    echo 0 > /sys/devices/platform/vpss/display1/enabled
    echo "74176,1280/110/220/40,720/5/20/5,1" > /sys/devices/platform/vpss/display1/timings
    echo 74175824 >  /proc/fpga/sdiout_video_rate  
    echo 1 > /sys/devices/platform/vpss/display1/enabled


(2) Is it okay to delay loading of the PCIe module?

Yes. As long as it is loaded before it is actually needed there should be no issue in delaying loading of it.


(3) How do you access the serial port?

Instead of the customary names

  • /dev/ttyS[0123..]

the DM81xx uses

  • /dev/ttyO[0123..]

For the DM816x, Z3 exports the UART0 and UART1 signals on the module connector. To use these ports, the customer just needs to use the appropriate device names.

If the customer wants to use UART2, they can just replace Z3's entries in /etc/inittab and set the console= variable in u-boot to point to an unused serial port.


(4) We are experiencing issues integrating with the Sierra Wireless MC5728 and MC8795. After we send a few kilobytes of data the system hangs. Do you have any suggestions?

We have seen customers succeed in getting rid of this by setting in kernels/linux/.config:

    CONFIG_MUSB_PIO_ONLY=y


(5) Do you have documentation on the RF output pin on the TI DM8168/DM8169?

This pin is no longer supported by TI. If you check the latest DM8168 datasheet, this pin is marked as “reserved.” Also, the following link mentions this is no longer supported:


(6) I see the message "VPSS_FVID2: M3 firmware version 0x1000145 is newer, driver may not work properly." Is this an issue?

This message occurs in EZSDK 5.05.02.00 even with no changes done by Z3. We believe this message can be ignored.


(7) I want to modify the video drivers. Can you tell me the relevant files to start with?

There are 5 files that are of interest:

    kernels/linux/drivers/media/video/netra/dummy_vpif.c 
    kernels/linux/drivers/media/video/adv7611.c
    z3apps/drivers/hdmi/ad7611/init_7611_edid.sh
    ezsdk/component-sources/omx_05_02_00_48/src/z3/z3_v4l2.c.
    ezsdk/component-sources/omx_05_02_00_48/examples/ti/omx/demos/capture_encode/src/ilclient.c    

“dummy_vpif.c” contains the code for the netra_autodetect.ko driver used to setup the video mux and detect incoming video input standards.

“adv7611.c” contains the code for the Analog Devices 7611 HDMI frontend chip.

“init_7611_edid.sh” is the init script that sets up the proper drivers based on the board ID.

“z3_v4l2.c” calls the ioctls provided by the netra_autodetect driver.

Finally, “ilclient.c” is an example of using the netra_autodetect driver in an EZSDK application.

Z3 boards are set up to share the video bus on the DM816x with several devices. In order to accomplish this, the devices are muxed and the desired input is selected via the netra_autodetect.ko kernel driver. The code for this driver is contained in dummy_vpif.c. The user space call of this code is located in z3_v4l2.c. All Z3 EZSDK applications requiring video input call the z3_v4l2_capture_autodetect() function in this file to set up the mux properly. An example of this can be found in ilclient.c. V4L2 then takes over and uses the driver for the front end chip (for example, adv7611.c for HDMI inputs) to configure the chip.


(8) I notice that the adv7611 entry is commented out in z3dm816x_i2c_boardinfo0 but /opt/z3/init_7611_edid.sh loads this kernel module. How is it that this piece is functioning?

adv7611 i2c_boardinfo is assigned at runtime using the v4l2_i2c_new_subdev_board() API in $PRJROOT/kernels/linux/drivers/media/video/netra/dummy_vpif.c (see also question (7) for details).


(9) Why is there a tlv320aic3x entry for both I2C0 and I2C1? The hardware documentation indicates that this device is on the Z3-DM8169-MOD2x board on I2C0.

There is one aic3x on the MOD-2x board on I2C0, and a second aic3x on the APP-02 board on I2C1.


(10) Please give us a pointer on implementing alpha blending.

Alpha blending can be implemented using the sysfs variables documented in:

    ezsdk/board-support/docs/TI81XX_VPSS_Video_Driver_User_Guide.pdf

There is an example of using alpha blending in:

    ezsdk/component-sources/omx_*/examples/ti/omx/demos/decode_display/src/Fb_blending.c

which can be exercised using the “-g 1” option to decode_display.

“Video windows” can be implemented by using transparency keying values in the frame buffer, and using a single video pipeline with the video positioned in the same location as the transparency key in the framebuffer.

If multiple windows are needed, they can be “painted” onto the same video window, using the mosaic method as in this sample application:

    ezsdk/component-sources/omx_*/examples/ti/omx/demos/decode_mosaicdisplay


(11) Please provide an example of using aspect ratio

The following example can be found in the code:

    if (pAppData->eCompressionFormat == OMX_VIDEO_CodingMPEG2) { 
        if ( captureAspectWidth == 16 && captureAspectHeight == 9 ) {
            tDynParams.videoDynamicParams.h264EncDynamicParams.videnc2DynamicParams.sampleAspectRatioWidth = 7;
        } else if ( captureAspectWidth == 1 && captureAspectHeight == 1 ) {
            tDynParams.videoDynamicParams.h264EncDynamicParams.videnc2DynamicParams.sampleAspectRatioWidth = 3;
        }
        else if ( captureAspectWidth == 4 && captureAspectHeight == 3 ) {
            tDynParams.videoDynamicParams.h264EncDynamicParams.videnc2DynamicParams.sampleAspectRatioWidth = 5;
        } 
        else if ( captureAspectWidth == 15 && captureAspectHeight == 11 ) {
            tDynParams.videoDynamicParams.h264EncDynamicParams.videnc2DynamicParams.sampleAspectRatioWidth = 5;
        } 
        else {
            tDynParams.videoDynamicParams.h264EncDynamicParams.videnc2DynamicParams.sampleAspectRatioWidth  = 0; 
        }
        tDynParams.videoDynamicParams.h264EncDynamicParams.videnc2DynamicParams.sampleAspectRatioHeight = 0; // bit stuffing enable
    }


(12) Are there any examples of integrating algorithms running on the DSP using OpenMax?

Yes, there is. The AAC-LC encoder and decoder are integrated into the EZSDK using OpenMax. Example code can be found in the directory:

    $PRJROOT/ezsdk/component-sources/omx_05_02_00_48/src/ti/omx/comp/aenc
    $PRJROOT/ezsdk/component-sources/omx_05_02_00_48/src/ti/omx/comp/adec

and an example of exercising the algorithms from the host can be found in:

    $PRJROOT/ezsdk/component-sources/omx_05_02_00_48/examples/ti/omx/demos/adec_snt
    $PRJROOT/ezsdk/component-sources/omx_05_02_00_48/examples/ti/omx/demos/audio_encode


(13) Can you provide an example of EDMA working with the A8?

An example can be found in:

    $PRJROOT/ezsdk/example-applications/linux-driver-examples-psp04.04.00.01/edma


(14) Is there a way of verifying the TVP7002 using V4L2?

In the file:

    /opt/z3/init_7611_edid.sh

there is the statement

    USE_V4L2=0

Here, change USE_V4L2=0 to USE_V4L2=1. This will run a V4L2 loopback from the the TVP7002 to the HDMI output.

In later versions of the code, it may be necessary to swap I2C addresses in:

    $PRJROOT/kernels/linux/arch/arm/mach-omap2/ti81xx_vpss.c

Specifically, instance 0 should be set to 0x5c and instance 1 to 0x5d.


DM810X/DM814X/DM816X-specific questions (RDK)


(1) How do I access the GPMC regions from user space?

Typically, one uses /dev/mem to gain uncached access to physical memory. Details can be found in:

    $PRJROOT/sysapps/busybox/miscutils/devmem.c


(2) How is pinmuxing handled?

You can check the current pinmuxing through the following commands:

    mount -t debugfs none /sys/kernel/debug
    cd /sys/kernel/debug/omap_mux
    cat *

You can modify the pinmux by writing a hex value to the register. Here is an example from the FPGA load script on the DM8107-SDI-RPS:

    mountpoint /sys/kernel/debug || mount -t debugfs none /sys/kernel/debug

    echo 0x10010 > /sys/kernel/debug/omap_mux/vout1_g_y_yc1
    echo 0x10010 > /sys/kernel/debug/omap_mux/vout1_g_y_yc0
    echo 0x10010 > /sys/kernel/debug/omap_mux/vout1_r_cr1

Also, driving GPIOs are described more here:


(3) Where can I get more information on scaling?

There is support for scaling in the frame buffer. For more information, the customer can look up

     TIFB_SET_SCINFO

in

    $PRJROOT/dvr-rdk/ti_tools/linux_lsp/collaterals/collaterals/docs$ evince TI81XX_PSP_VPSS_Video_Driver_User_Guide.pdf


(4) Sometimes I observe strange behavior in i2cdetect/i2cdump (for example, when reading an invalid address, it no longer works even for valid addresses)

i2cdetect and i2cdump can be unreliable sometimes. It is better to use “i2c probe” in u-boot for debug.


(5) The file board-ti8169-evm.c sets up an AIC device on i2c-2. However, i2c-2 is not used on the module. Is this needed?

This is not needed. There are 2 parts to initializing the AIC device. The first is the init in board-ti8169-evm.c, which by itself does not have any effect. The second is in kernels/linux/sound/soc/davinci/davinci-evm.c which, based on the board ID, drives instantiation.


(6) There are 2 sets of development tools in the RDK -- "Arm_v5_le" and "Arm-arago-linux-gnueabi". Which should I use?

Use “Arm-arago-linux-gnueabi” in dvr-rdk/ti_tools/cgt_a8/argo/linux-devkit. The $(CROSS_COMPILE) variable should already be set up to use this path when z3-env is sourced.


(7) Can you describe the memory map of the RDK environment?

The memory maps for the ti816x platform are located here:

    prjroot/dvr-rdk/dvr_rdk/mcfw/src_bios6/cfg/ti816x/config_1G_256MLinux.bld

The Linux memory is reserved in the first 512MB block as seen in the excerpt from the .bld file below. In order to give Linux more memory, you will need to reallocate it from elsewhere. Another option is to reserve less VRAM via bootargs_misc.

    /* first 512MB */
    LINUX_SIZE                 = 256*MB;
    SR1_SIZE                   = 201*MB;
    SR3_INTRADUCATI_IPC_SIZE   =          124*KB;
    VIDEO_M3_CODE_SIZE         =  2*MB  + 512*KB;
    VIDEO_M3_BSS_SIZE          = 11*MB  + 512*KB;
    VIDEO_M3_DATA_SIZE         =  2*MB  + 512*KB;
    DSS_M3_CODE_SIZE           =  1*MB  + 512*KB;
    DSS_M3_BSS_SIZE            = 16*MB  + 512*KB;
    DSS_M3_DATA_SIZE           =  4*MB  + 512*KB;
    DSP_CODE_SIZE              =  800*KB;/*1*MB;*/
    DSP_DATA_SIZE              = 15*MB  + 100*KB;//100*KB;

Z3 currently reserves 20MB of VRAM via the bootargs_misc variable in u-boot. To change this, change the following line in $PRJROOT/dvr-rdk/dvr_rdk/bin/ti816x/load.sh to have the VRAM usage less than the bootargs_misc VRAM setting:

insmod ./kermod/ti81xxfb.ko vram=0:8M,1:8M,2:4M

Also, if LINUX_SIZE is increased, it is necessary to also adjust the mem= to reflect this in the bootargs_misc u-boot variable.


(8) Can you describe the boot sequence?

(a) As part of the kernel boot, the following /etc/rc.5 scripts are run:

     *S10load-hdvicp2-firmware.sh      -> ../init.d/load-hdvicp2-firmware.sh     [kernel video module]
     *S15load-hdvpss-firmware.sh       -> ../init.d/load-hdvpss-firmware.sh      [kernel video module]
     *S16load-dsp-firmware.sh          -> ../init.d/load-dsp-firmware.sh         [kernel video module]
     *S98z3.sh                         -> /opt/z3/init_7611_edid.sh              [set up app board video enc/dec via i2c/FPGA]
     *S99z3demo -> ../init.d/z3demo                                              [start DVR demo]

(b) “z3demo” creates and executes

    */tmp/z3start.tmp

(c) “z3start.tmp” then runs

     */opt/dvr_rdk/ti816x/runz3demo.sh

(d) “runz3demo.sh” pulls the name of the application to run passed by u-boot from the kernel cmdline and calls the desired script(s) based on that. In the default case 3 scripts are run:

    *init.sh        Removes previously loaded modules and reloads syslink.ko
    *load.sh        Loads DVR video driver modules
    *run_mcsenc.sh  Starts the demo and creates the FIFOs for communication with the demo application

(e) The demo application is then started in the background:

    *bin/mcfw_mcsenc -> z3_dvr_rdk_demo_mcfw_api.out


(9) What is the default video input setting used?

It is 16BIT YUV422P.


(10) I would like to support hot plug by building a kernel module and doing an insmod later. Is this possible?

It should be. It looks like others have gone down this road (DM81xx RC with FPGA EP) and TI has some suggested patches to allow PCI rescanning. See the following threads:


(11) I'm using framebuffer and QT. How does framebuffer relate to what is displayed by MSCDEC?

Please see the following documentation that is included in the build:

    $PRJROOT/dvr-rdk/ti_tools/linux_lsp/collaterals/collaterals/docs/TI81XX_PSP_VPSS_Video_Driver_User_Guide.pdf

Specifically, page 19 under the Transparency Keying heading. Basically, you need to set a background color for the area of the screen you are not using and then set up the Transparency Keying to make that color transparent. There are examples on how to do this in the document.


(12) Please tell us more about the voltage regulator on the DM8107 MOD and how to control it.

On the DM8107, voltage is controlled through the TPS65911 regulator. The voltages for the TPS65911 can be read in two ways. The first is via i2c from address 0x2D (assuming the chip is not in Smart Reflex mode):

Voltage Address
CORE (SW) 0x28
ARM (SW1) 0x22
IVA (SW2) 0x25

The default value for all 3 of these voltages is 1.2V.

The second way to read the TPS65911 voltages is by setting the following in your kernel config (should be default):

CONFIG_MFD_TPS65910=y
CONFIG_REGULATOR_TPS65910

If the TPS65910 regulator driver is enabled, the voltage can be read from sysfs:

root@arago:~# cat /sys/class/regulator/regulator.5/microvolts 
1200000

To allow the automatic setting of the regulator based on CPU frequency, cpufreq has to be enabled in the kernel. Also, an opp file containing the available frequencies and their corresponding voltages needs to be added to '/arch/arm/mach-omap2/'. Lastly, in '/arch/arm/mach-omap2/cpu-omap.c', the correct device needs to be passed to regulator_get so the correct set_voltage function will be called. See http://processors.wiki.ti.com/index.php/TI81XX_PSP_PM_DVFS_User_Guide

Below is an example of how to dynamically change the A8 frequency:

   #Set the governor to the userspace governor
   echo -n "userspace" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
   #Set the clock speed to 720MHz
   echo -n "720000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed 
   #Set the clock speed to 1000MHz
   echo -n "1000000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed


(13) How do you turn Smart Reflex power management off?

In order to turn Smart Reflex off, set the following in the kernel config:

CONFIG_REGULATOR_GPIO=n


(14) What are the supported motherboards for Z3's PCI boards?

Motherboard # of PCIe slots Notes
EliteGroup H77H2-M3 1 On-board Ethernet Issues
ASUS P8H67-MPRO 2 PCIe slot 1 only uses x1 width (1/2 bandwidth)
GIGABYTE GA-Z77MX-D3H 3 N/A


(15) How do you add a new resolution to the HDVPSS and V4L2?

When adding a new resolution to the RDK HDVPSS driver, several files need to be edited:

  • prjroot/dvr-rdk/dvr_rdk/mcfw/interfaces/link_api/system_const.h
    • The new resolution needs to be added to the SYSTEM_Standard enum
    •     SYSTEM_STD_1080I_48,
          /**< 1920x1080 48FPS interlaced HD standard. */
          
  • prjroot/dvr-rdk/ti_tools/hdvpss/dvr_rdk_hdvpss/packages/ti/psp/vps/fvid2.h
    • The FVID2_Standard enum needs to match the SYSTEM_Standard enum from above.
    •     FVID2_STD_1080I_48,
          /**< 1920x1080 48FPS interlaced HD standard. */
          
  • prjroot/kernels/linux/include/linux/fvid2.h
    • Propagate the DVR-RDK fvid2.h changes to Linux.
  • prjroot/dvr-rdk/dvr_rdk/mcfw/src_bios6/links_common/system/system_common.c
    • This file contains compile time checks for match FVID2_Standard and SYSTEM_Standard enums.
    • UTILS_COMPILETIME_ASSERT(SYSTEM_STD_1080I_48 == FVID2_STD_1080I_48);
  • The following files all require the addition of the new standard:
    • prjroot/dvr-rdk/ti_tools/hdvpss/dvr_rdk_hdvpss/packages/ti/psp/vps/drivers/src/fvid2_drvMgr.c
    • prjroot/dvr-rdk/ti_tools/hdvpss/dvr_rdk_hdvpss/packages/ti/psp/vps/hal/src/vpshalHdVencDefaults.h
    • prjroot/dvr-rdk/ti_tools/hdvpss/dvr_rdk_hdvpss/packages/ti/psp/vps/hal/src/vpshal_hdvenc.c
    • prjroot/dvr-rdk/ti_tools/hdvpss/dvr_rdk_hdvpss/packages/ti/psp/devices/sii9022a/src/vpsdrv_sii9022a.c
    • prjroot/dvr-rdk/ti_tools/hdvpss/dvr_rdk_hdvpss/packages/ti/psp/platforms/src/vps_platform.c
    • prjroot/dvr-rdk/ti_tools/hdvpss/dvr_rdk_hdvpss/packages/ti/psp/platforms/ti816x/src/vps_platformTI816x.c
    • prjroot/dvr-rdk/ti_tools/hdvpss/dvr_rdk_hdvpss/packages/ti/psp/platforms/ti814x/src/vps_platformTI814x.c
    • prjroot/dvr-rdk/ti_tools/hdvpss/dvr_rdk_hdvpss/packages/ti/psp/platforms/ti8107/src/vps_platformTI8107.c

To add new standards to V4L2 the following modifications need to be made:

  • A new extended standard needs to be added to both prjroot/dvr-rdk/dvr_rdk/mcfw/src_linux/devices/z3_v4l2/videohd.h and prjroot/kernels/linux/inculde/media/davinci/videohd.h
    /* Z3 - Digital TV standards EXT */
    /* if V4L2_STD_EXT denotes the these standards */
    #define V4L2_STD_1080I_24       ((v4l2_std_id)(0x0000800000000001ULL))
  • Processing for the new resolution needs to be added to prjroot/dvr-rdk/dvr_rdk/mcfw/src_linux/devices/z3_v4l2/z3_v4l2.c
    case  V4L2_STD_1080I_24: 
       pStatus->isVideoDetect = TRUE;
       pStatus->frameWidth = 1920;
       pStatus->frameHeight = 1080;
       pStatus->frameInterval = 1000000/24;
       pStatus->isInterlaced = TRUE;
       pStatus->systemVideoStandard = SYSTEM_STD_1080I_48;
       *pStartX = 192;
       *pStartY = 36;
       break;
  • Also, detection code needs to be added to the appropriate video drivers.


(16) How many different present configurations can I save?

On the Z3 RDK-based platforms, up to 9 different configurations can be saved.


(17) I want to unicast the same input to more than 1 destination. What is the best way to do this?

The latest versions of the RDK contain an “Encode 1 to 3 Ch” mode. This can be used to take the same input and encode it in 2 or 3 different ways.


(18) Where can I find code for the serial UI?

The serial menu is run from one of the following 2 scripts:

    $PRJROOT/dvr-rdk/dvr_rdk/bin/common/run_mcsenc.sh 
    $PRJROOT/dvr-rdk/dvr_rdk/bin/common/run_mcsdec.sh 

These files are copied to the board filesystem at /opt/dvr-rdk/ti816x.

Note that there also may be an /opt/dvsdk directory. Those files are for different platforms and can be disregarded. Only files in /opt/dvr-rdk should be examined for RDK development.


(19) What happens if I try to encode interlaced source using "progressive only" mode?

The RDK will convert the interlaced source to progressive by taking one field and resizing it to full size. It will then encode that result as a progressive stream.


(20) I see references to "Z3_TRUEVIEW". What does this mean?

This refers to code that applies to the H.264 TruView encoder – an enhanced quality version of the H264 encoder. This TruView encoder is available to those that license DM8169 systems.


(21) When mounting the root filesystem I see that "relatime" is used. I would like to change this to "noatime." Do you see any issues with doing this?

There should be no issue with doing this. “relatime” is used because it was the default option. Changing to “noatime” should not cause any issues.


(22) Where are the GPIO registers set up? Is it in u-boot or the linux kernel?

Some are set up in u-boot and some in linux. In u-boot many of the addresses can be found in

   arch/arm/include/asm/arch-ti81xx

Addresses not found there can be found in the TI chip documentation.


This is indicative that encmode was not set. Make sure that encmode was set before running the encode command.


(24) I would like to use MCSENC in a script. Is there an example of how to do this?

A few examples can be found in the file runz3demo.sh. A good example is at line 46:

echo "starting mcsenc"
         . /opt/mcsenc/mcsenc.sh 
         echo "starting component1"
         ${ZDVR_HOME}/zencode.sh instance=1 source=COMPONENT1  dst=file:///root/videos/component1_out_${APPEND_STR}.h264 vratediv=1 size=1280x720 vrate=4M audio=off
         echo "starting HDMI2"
         ${ZDVR_HOME}/zencode.sh instance=2 source=HDMI2 dst=file:///root/videos/hdmi2_out_${APPEND_STR}.h264 vratediv=1 vrate=4M size=1280x720 audio=off
         echo "file demo started"


(25) Where can I find an example of how actv_config is parsed?

Examples can be found in the file run_mcsenc.sh and in the Web GUI scripts. It is referred to as WORKING_CONFIG in these scripts.


(26) I want to rebuild just the encoder app. How can I do this?

You can use the following command:

    make -C dvr-rdk/dvr_rdk dvr_rdk_linux && make install


(27) Do you have any suggestions for capturing RGB?

You should be able to do this by setting the busInterfaceType to 1 in the MultiCh_dectectStd(vipIst, videoDecoderName,capstatus,0, busInterfaceType) command. In fact, if “:RGB” is placed after the SRC in the MCSENC command, this automatically gets set (for example: “HDMI:RGB”).


(28) What toolchain is used with the RDK?

We use the arago toolchain distributed with TI's RDK release. It can be found in:

    $PRJROOT/dvr-rdk/ti_tools/cgt_a8/arago/linux-devkit/arm-arago-linux-gnueabi


(29) How can you find out what the loading on the IVA and M3 are?

You can find these out using the “Z” command within the serial menu.


(30) Is 720p29.97 encode supported in the RDK?

Yes it is.


(31) Is it possible to change the bitrate without stopping and restarting the encoder?

Yes it is. There are 2 ways this can be done. The first is by changing the bitrate in the Web GUI and clicking the “update” button. The second is to use the “dynamic” command in MCSENC.


(32) I see a greenish tint when encoding HDMI with a DM8107 MOD. What could be the cause?

This is indicative of the one of the 2 ribbon connectors in the back of the module being lose. Please double-check those connections.


(33) I have a DM8168-PCI-RPS (or DM8168-PCI2-RPS). I want to put the board in endpoint mode. How do I go about doing this?

There are 3 steps you should take to do this:

(1) Set the power jumper (J21) on the APP-22 board to 2-3 to accept power from the PCI bus (the jumper goes on the right 2 pins). If an APP-41 is being used, this step is not necessary.

(2) Set the boot mode jumper on the module to PCI boot mode (1-2, 9-10).

(3) Make sure the motherboard connected to is a supported motherboard (see question (14)).

See the User's Guide for more details.


(34) How do I use composite output on the DM8107-RPS?

The composite output always outputs whatever is sent through the HDMI output. Whenever a resolution larger than NTSC is output on HDMI, the DM8107-RPS automatically resizes to NTSC before outputting through composite output.


(35) We want to completely disable the Web GUI interface. What is the best way to do this?

The best way to do this is to remove “S99webserver.sh” from /etc/rc5.d on the system.


Miscellaneous


(1) Please explain the serial number that appears on the Z3 Module or App board.

The serial number on each board has the following form:

  mmmmmmyywwsssss
  mmmmmm = model number (i.e. 300012 means 30-0012)
  yyww   = manufacturing date code, ww=week, yy=year
  sssss  = serial number

For example, a serial number of “30002101133810001” would indicate:

  Model # = 30-0021-01 (Rev 1 of the DM8107-MOD-02)
  Year    = 2013
  Week    = 38
  Serial  = 10001


(2) How do you program the RTC?

On the DM814x and DM816x modules, the RTC is controlled through code that can be programmed through a free Elprotronic utility. A TI MSP430 programmer is needed. Some sample linux utilities to exercise the code are also provided. Detailed instructions on programming the RTC, verifying operation in u-boot, and verifying operation in linux can be found here.

For details on programming the RTC on the DM368 or DM8107 products, please contact Z3.


(3) What size battery does the RTC on the DM81XX modules use?

For the DM814x and DM816x modules, CR1220 or CR1225 batteries can be used.


(4) When updating firmware, should I use the "UPD" or "MFR" image?

All Z3 firmware updates contain 2 versions – an “UPD” and a “MFR” version. They are identical with the one difference that the “MFR” version changes all of the u-boot environment variables (IP address, netmask, TFTP server location, NFS server location etc) to default values. This is the version that the manufacturer loads when the boards are first made. The “UPD” version does not modify the u-boot environment variables. If you have already configured the software to work in your environment, you can use “UPD” to preserve the u-boot environment variable changes you had done before. In most situations the “UPD” is the best to use.


(5) I am in a remote location. Is there a way to reboot within the Linux system without physically turning the board on/off?

From the Linux prompt, type “reboot -f”.


(6) I changed the IP address within the app but I notice the board starts with a different one at boot-up before the app runs. How do I change the IP address that is used at boot-up?

You can do this by changing the value of “ipaddr” within the u-boot environment. If you have an RPS User's Guide, there is a detailed description of how to do this. Alternately, you can use the “fw_setenv” command within Linux from the serial interface. From a serial demo menu, select “X” to exit. This should bring you to an arago login prompt. Type “root” and then <enter>. From there, you can use “fw_setenv ipaddr” to set the IP address you want to use at boot-up. For example, to change this to 192.168.0.6, you would type:

    fw_setenv ipaddr 192.168.0.6

You can then type

    reboot -f

to reboot the board and have your settings take effect. As a side note, “fw_printenv” can be used to find current values of u-boot environment variables.

On a DM365/DM368, the procedure is slightly different. Instead of “fw_setenv ipaddr 192.168.0.6” you would type the following commands:

    read_ubootenv_from_flash.sh
    fw_setenv_target ipaddr 192.168.0.65
    write_ubootenv_to_flash.sh


(7) When I plug in a SATA drive, I see the message at boot-up "ata1.00: failed to IDENTIFY" and I can't access the drive. What could be causing this?

When this happened before the root cause ended up being that the power supply for the SATA drive was not large enough. We recommend you double-check the power supply to the SATA drive if you encounter this message.


(8) We have a DM8169 product and want to add support for Service Description Tables (SDT) and Stream Identifier (SID) to conform to ISO 13818-11 and ETSI EN 300 468 V1.14.1. Is this possible to do?

Yes. You can use the function tsmux_add_user_table() to support this. This applies to both the EZSDK and the RDK.

faqs/general.1431374194.txt.gz · Last modified: 2015/05/11 19:56 by rchen