# [SOLVED] Unknown Symbol

## thesequel

I'm running 2.6.34 (r4 I think... Not at my computer right now) and I can not figure out how to enable a symbol. The symbol I'm trying to enable is something like ir_hauppauge_new_table. I don't know how to enable symbols, I just use menuconfig to enable things that will select what I want. I hope that made sense.

This is needed by cx18 (dmesg says there's and unknown symbol ir_whatever). I tried looking for something in the kernel about IR but I did t find anything. I know that this symbol is in drivers/media/IR if it helps. Any ideas?

EDIT: Some output...

```
$ uname -r

2.6.34-gentoo-r12

$ dmesg | grep cx18

[    4.181151] cx18: Unknown symbol ir_codes_hauppauge_new_table

```

Last edited by thesequel on Mon Dec 06, 2010 2:32 am; edited 2 times in total

----------

## Goverp

IIUC, you've found the symbol in the kernel source, but the cx18 application can't see it in the executing kernel binary.  That means your kernel configuration doesn't cause that bit of the source to be compiled, or if it's compiled into a module, you've not loaded said module, or it's one of the deprecated symbols that don't get compiled unless you select a particular kernel option (CONFIG_UNUSED_SYMBOLS).

----------

## NeddySeagoon

thesequel,

Symbols provided by one part of the kernel are used by other parts of the kernel. Sometimes by external modules that link against the kernel.

If you have and  Unknown Symbol error, you are trying to load or link a module against a kernel that does not provide one of more of the symbols the new module needs.

In short, you need to select something else in make.menuconfig and rebuild your kernel.

If you provide the exact text of the error, so we know the missing symbol name, we can tell which part of the kernel you need to enable.

Tell us what you are doing and what you want to achieve - the context of the error is important too.

----------

## thesequel

Okay, I'm at my computer now.

```
$ uname -r

2.6.34-gentoo-r12

$ dmesg | grep cx18

[    4.181151] cx18: Unknown symbol ir_codes_hauppauge_new_table

```

I've also found more information about this symbol here: http://lxr.free-electrons.com/ident?v=2.6.34;i=ir_codes_hauppauge_new_table

I don't know if that's useful or not, but it couldn't hurt. And, how would I find out if this is deprecated and need to enable some option like Goverp suggested?

As for context, I'm trying to install an HVR-1600. I've had some other unkown symbol errors before this one but I was able to fix those. I have no idea on what I should select for this symbol though.

Thanks for the help everyone.   :Smile: 

----------

## Manko10

Looks as if you were not the only one having this problem

I'm not familiar with cx18 but have you installed the firmware (media-tv/cx18-firmware)?

----------

## NeddySeagoon

thesequel,

```
grep -Ri ir_codes_hauppauge_new_table /usr/src/linux
```

finds nothing, which implies that the symbol is not defined in the kernel.

That grep searches he entire kernel source and the binaries I have in my kernel tree.

Some context would be useful

```
dmesg | grep -A10 -B10 cx18 
```

----------

## NeddySeagoon

thesequel, ,

```
ir_codes_hauppauge_new_table

Defined as a variable in:

    * drivers/media/IR/ir-keymaps.c, line 1844 
```

is very useful.

Somewhere in /usr/src/linux/drivers/media/IR is the make menuconfig option that owns that symbol. You need to turn it on.

----------

## thesequel

@Manko10

The cx18 firmware is included in the kernel, I guess that package is an updated version. If I can't get this to work I'll try emerging that.

@NeddySeagoon

I'm not sure what you mean? I have to edit a file in that directory to enable it?

```
$ dmesg | grep -A10 -B10 cx18

[    2.631786] EXT4-fs (sda3): mounted filesystem with ordered data mode

[    2.632119] VFS: Mounted root (ext2 filesystem) readonly on device 8:3.

[    2.632390] Freeing unused kernel memory: 596k freed

[    2.632768] Write protecting the kernel read-only data: 10240k

[    2.633213] Freeing unused kernel memory: 1000k freed

[    2.633805] Freeing unused kernel memory: 1720k freed

[    3.016976] stty used greatest stack depth: 4952 bytes left

[    3.064094] grep used greatest stack depth: 4832 bytes left

[    3.790162] udev: starting version 151

[    3.979459] Linux video capture interface: v2.00

[    4.181151] cx18: Unknown symbol ir_codes_hauppauge_new_table

[    4.198016] uhci_hcd 0000:00:1a.1: reserve dev 2 ep81-INT, period 8, phase 4, 118 us

[    4.215415] uhci_hcd 0000:00:1a.1: release dev 2 ep81-INT, period 8, phase 4, 118 us

[    4.275356] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded

[    4.275388] r8169 0000:04:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16

[    4.275432] r8169 0000:04:00.0: setting latency timer to 64

[    4.275470]   alloc irq_desc for 31 on node -1

[    4.275472]   alloc kstat_irqs on node -1

[    4.275483] r8169 0000:04:00.0: irq 31 for MSI/MSI-X

[    4.275895] r8169 0000:04:00.0: eth0: RTL8168c/8111c at 0xffffc900051a4000, 00:24:1d:2b:7b:1e, XID 1c4000c0 IRQ 31

[    4.279189] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded

```

----------

## NeddySeagoon

thesequel,

I guess you need to enable 

```
Compile Remote Controller keymap modules
```

in your kernel.

Its help says 

```
Prompt: Compile Remote Controller keymap modules

  Defined at drivers/media/IR/keymaps/Kconfig:1

  Depends on: MEDIA_SUPPORT [=m] && IR_CORE [=m]

  Location:

    -> Device Drivers

      -> Multimedia support (MEDIA_SUPPORT [=m])

        -> Infrared remote controller adapters (IR_CORE [=m])
```

----------

## thesequel

Okay I'm going to try that, but how did you figure it out?

Hmm.. I don't have an IR section in Multimedia Support...

Here's what I'm seeing:

http://i.imgur.com/D9rfY.png

I'm going to try updating to kernel 2.6.36 since an IR section is supposed to show up in that one...

----------

## thesequel

Okay I've resolved the Unkown Symbol error but now I have a new problem   :Sad: 

 *Quote:*   

> $dmesg | grep cx18
> 
> [    4.288286] cx18:  Start initialization, version 1.4.0
> 
> [    4.288318] cx18-0: Initializing card 0
> ...

 

According to and old Hauppauge FAQ (http://www.hauppauge.com/pages/faq/support_faq_hvr1600.html) I should try editing cx18-firmware.c at line 350 and change '#if 0' to '#if 1'. I've uploaded my cx18-firmware.c here: http://pastebin.com/z6zPSUts Obviously, line 350 does not say '#if 0'.

Any suggestions on what I should try next? Should I open a new thread for this or keep it here?

----------

## krinn

if i were you: create a new thread with cx-18 name (well the card or chip i don't know its real name) in title to drow others cx-18 users attention to your thread. 

Best way to win.

----------

## NeddySeagoon

thesequel, 

I figured out your missing symbol problem from your  *thesequel wrote:*   

> I've also found more information about this symbol here: http://lxr.free-electrons.com/ident?v=2.6.34;i=ir_codes_hauppauge_new_table

 and using 

```
make xconfig
```

 on my 2.6.36 kernel. make xconfig can be set up to show all the hidden options and the page you likked to showed me approximately where to look in the kernel source, it mentions drivers/media/IR/ir-keymaps.c, line 1844, which is relative to /usr/src/linux/

----------

