This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Troubles configuring the WL1273 + OMAP 3621.

Other Parts Discussed in Thread: WL1271

Hi,

We're using a combination of OMAP 3621 + WL1273 chip. We have the WLAN module run successfully (WiFi networking works well). Now we'd like to turn on other modules left - BT & FM radio which are part of WL1273. Here I have a two questions:

1) Look like the st_drv.ko module is looking for firmware file, where should I get proper binary? Is the same firmware file which we have on /wlan directory in file system tree?

2) What's about the UIM service - I took a peek inside the /drivers/misc/ti-st/ briefly analyzing sources - the st_drv.ko also looks for some user space service to be started and cooperate with it - I've learned that's the UIM utility which needs to be started, I found the UIM-FEP (console version of UIM), does the matter which UIM version I use?

 

Best regards,

Tomasz Kaczmarek.

 

  • Hi Tomasz,

    I don't know exactly what package you are using but the firmware file for BT/FM is different from the one for WLAN.

    The firmware files for BT/FM have suffix of bts (stands for BT Scripts).

    Can you find these files in your package?

    Regarding UIM, it is a must when operating with the Shared Transport module. Again, it depends what package you are using but I believe you should find it under /mydroid/hardware/ti/omap3/ti_st/uim. The uim should be started at init phase (in file init.rc in the root directory of the file system).

    BR,

    Shlomi

  • Hi,

    Sorry if I didn't get it precisely. So, we're using TI-Pooky built kernel & file system distribution - it's Linux 2.6.32.7 R5-P1. Our board is based on TI's EDP development board (OMAP 3621+E-Ink). Our radio connectivity chip is WL1271 to be exact. We have built externally driver for WiFi module and it works well.

    Inside the kernel source tree we have /drivers/misc-ti-st/ drivers to BT and FM. Now we're trying to make the BT module work. Like I wrote before, first two issues we need to face is the lack of UIM in our file system and lack of firmware data. We have firmware file which came along with WiFi driver package, but I don't know if it's the correct one (one firmware file for WL1271 despite the module we use - WiFi, BT, FM). Could you describe shortly what steps are needed in our situation to make the BT work? Are the TI-ST drivers OK? Please keep in mind that we're using regular Linux system, not Android one.

     

    Best regards,

    Tomasz Kaczmarek

  • Hi,

    For BT/FM you need separate FW binaries. It is not the same as WiFi firmware. As I described, the firmware binaries for BT and FM should have .bts suffix.

    Regarding TI-ST drivers, they are OK. You need to have several kernel objects: st_drv.ko, bt_drv.ko and fm_drv.ko when you make the modules in the kernel.

    UIM is a must since it interacts with kim (which is inside st_drv.ko). it is not android related so I din't know why you don't have it.

    BR,

    Shlomi

  • Hello,

    OK, we've completed the software part - the UIM, the BT/FM firmware (from wl1271.tar.bz2). We did the described steps in order to run BT functionality on our board with WL1271, unfortunately still something goes wrong, please consider the following debug from console:

    root@epd:/# hciconfig hci0 up
    uim: Inside st_sig_handleruim: signal received, opening /dev/ttyO0
    uim: Inside set_baud_rateuim: set_baud_rate() done
    uim: Setting speed to 3000000
    uim: Inside read_command_completeuim: Command complete started
    uim: Inside read_hci_eventuim: read_hci_event
    uim: Invalid response
    uim: Inside st_sig_handleruim: signal received, opening /dev/ttyO0
    uim: Inside set_baud_rateuim: set_baud_rate() done
    uim: Setting speed to 3000000
    uim: Inside read_command_completeuim: Command complete started
    uim: Inside read_hci_eventuim: read_hci_event
    uim: Command complete done
    uim: Speed changed to 3000000
    uim: Inside set_custom_baud_rateuim: Changing baud rate to 3000000, flow control to 1
    uim: set_custom_baud_rate() done
    uim: Inside read_firmware_versionuim: wrote 4 bytes
    uim: reading -1 bytes
    uim: 0
    uim: 0
    uim: 0
    uim: 0
    uim: 0
    uim: 0
    uim: 0
    uim: 0
    uim: 0
    uim: 0
    uim: 0
    uim: 0
    uim: 0
    uim: 0
    uim: 0

    uim: Inside st_sig_handleruim: Inside st_sig_handleruim: signal received, opening /dev/ttyO0
    uim: Inside set_baud_rateuim: set_baud_rate() done
    uim: Setting speed to 3000000
    uim: Inside read_command_completeuim: Command complete started
    uim: Inside read_hci_eventuim: read_hci_event
    uim: Invalid response
    uim: Inside st_sig_handleruim: signal received, opening /dev/ttyO0
    uim: Inside set_baud_rateuim: set_baud_rate() done
    uim: Setting speed to 3000000
    uim: Inside read_command_completeuim: Command complete started
    uim: Inside read_hci_eventuim: read_hci_event
    uim: Command complete done
    uim: Speed changed to 3000000
    uim: Inside set_custom_baud_rateuim: Changing baud rate to 3000000, flow control to 1
    uim: set_custom_baud_rate() done
    uim: Inside read_firmware_versionuim: wrote 4 bytes
    uim: reading -1 bytes
    uim: 0
    uim: 0
    uim: 0
    uim: 0
    uim: 0
    uim: 0
    uim: 0
    uim: 0
    uim: 0
    uim: 0
    uim: 0
    uim: 0
    uim: 0
    uim: 0
    uim: 0

    Can't init device hci0: Input/output error (5)

    Maybe above debug looks familiar to you, so you can easily put us on right track. We had to made some changes in uim.c sources. Our serial console driver does not support the line discipline setup - in our serial console device driver omap-serial.c there's no ioctl() call handling function at all, so trying to set it via ioctl() call ends up with error:

    /* After the UART speed has been changed, the IOCTL is

    * is called to set the line discipline to N_SHARED

    */

    ldisc = line_discipline;

    if (ioctl(dev_fd, TIOCSETD, &ldisc) < 0) {

    UIM_ERR(" Can't set line discipline");

    close(dev_fd);

    return -1; // RETURNS -1 ALL OVER THE TIME;

    }

    Let mi remind you, the kernel we're using is Texas Instruments Pooky Built R5-P1 edition (2.6.32.7). So, the only changes we made to UIM were removing the line discipline setup (before that the setup was done with value 20 which means N_SHARED define from include/linux/tty.h).
    Best regards,
    Tomasz Kaczmarek.