Tutorial: Oscam installation Ubuntu (Ziggo)

Added by Bas K about 4 years ago

There are lot of different howto's around when you search for 'Oscam installation instructions'. To start this could not make things easy.
That's why i made this tutorial.

First we must make sure we can install repository's (PPA):
For Ubuntu 12.04

sudo apt-get install python-software-properties

For Ubuntu 12.10 and up
@sudo apt-get install software-properties-common

Now we add the Oscam repository:

sudo apt-add-repository ppa:oscam/ppa
sudo apt-get update

Install oscam:
  • oscam-svn (trunk version)
  • oscam (latest stable version)
    sudo apt-get install oscam

When the installation is done stop the oscam service:

sudo service oscam stop

Now we need to edit some files, so we need to know where this files are located:

dpkg -L oscam

Below are the three files we need to edit.
/etc/oscam/oscam.server
/etc/oscam/oscam.user
/etc/oscam/oscam.conf

First we make sure we backup those files before editing:

cd /etc/oscam
sudo mv oscam.conf oscam.conf.bak
sudo mv oscam.server oscam.server.bak
sudo mv oscam.user oscam.user.bak

sudo nano oscam.conf

oscam.conf
NOTE: Be sure you edit the lines 42, 43 and 45.
sudo nano oscam.server

oscam.server
sudo nano oscam.user

oscam.user
NOTE: Be sure you add the right CAID on oscam.server line 9 and oscam.user line 6 and 7.
  • Ziggo/Casema CAID 0602
  • Ziggo/Multikabel CAID 0604
  • [email protected] CAID 0604

Now start Oscam, and tail the log:

sudo service oscam start
sudo tail -f /var/log/oscam/oscam.log

And be sure this lines are showed:
2012/05/27 14:21:30 147E2B0 r found cardsystem irdeto
2012/05/27 14:21:30 147E2B0 r entitlements for provider: 1, id: 024342
2012/05/27 14:21:30 147E2B0 r chid: 254F, date: 2007/03/17 - 2007/03/31
2012/05/27 14:21:30 147E2B0 r chid: 0003, date: 2012/05/27 - 2012/06/26
2012/05/27 14:21:30 147E2B0 r chid: 0344, date: 2012/05/27 - 2012/06/26
2012/05/27 14:21:30 147E2B0 r chid: 000F, date: 2012/05/27 - 2012/06/26
2012/05/27 14:21:30 147E2B0 r chid: FFE3, date: 2012/05/27 - 2012/06/26
2012/05/27 14:21:36 147E2B0 r [irdeto-reader] ready for requests

Now Oscam is ready.

Tvheadend

Now start your browser and load Tvheadend.
http://your.ip:9981

Go to: Configuration > CSA > Code Word Client
Choose: Add entry
Enabled: Yes
Hostname: 127.0.0.1
Port: 15050
Username: tvheadend
Password: tvheadend
DES Key: 01:02:03:04:05:06:07:08:09:10:11:12:13:14
Update Card: Yes

Show system log in the lower right corner and choose 'save changes'
This will give you an output:
May 27 14:24:41 cwc: Connected to 127.0.0.1:15050
May 27 14:24:41 cwc: 127.0.0.1: Connected as user 0x01 to a Irdeto-card [0x0604 : 00.00.00.00.19.34.19.d0] with 5 providers
May 27 14:24:41 cwc: 127.0.0.1: irdeto card
May 27 14:24:41 cwc: 127.0.0.1: Provider ID #1: 0x000000 00.00.00.00.00.03.45.20
May 27 14:24:41 cwc: 127.0.0.1: Provider ID #2: 0x000001 00.00.00.00.01.ff.ff.ff
May 27 14:24:41 cwc: 127.0.0.1: Provider ID #3: 0x000002 00.00.00.00.01.ff.ff.ff
May 27 14:24:41 cwc: 127.0.0.1: Provider ID #4: 0x000003 00.00.00.00.01.ff.ff.ff
May 27 14:24:41 cwc: 127.0.0.1: Provider ID #5: 0x000004 00.00.00.00.00.00.00.00
May 27 14:24:41 cwc: 127.0.0.1: Will forward EMMs

The last line forward EMMs will update your Ziggo card, otherwise you have to re-activate your ziggo card once in a while in your Ziggo decoder.


Replies (16)

RE: Tutorial: Oscam installation Ubuntu (Ziggo) - Added by Chorfu Ng about 4 years ago

Great tutorial!
I followed it and managed to get my card recognized. Only issue is its not showing any services/channels in tvh. Could you please expand the tutorial to cover this as well?

RE: Tutorial: Oscam installation Ubuntu (Ziggo) - Added by Alex . about 4 years ago

Chorfu Ng wrote:

Great tutorial! > I followed it and managed to get my card recognized.
Only issue is its not showing any services/channels in tvh. Could you please expand the tutorial to cover this as well?

I guess your problem is not with oscam directly , but with setting up tvheadend in the first place.
(or do you mean the list of services is populated, but they are not decoded when you try to play them?).
Can you give some more details: Are the muxes added? Is the initial scan completed?

Alex.

RE: Tutorial: Oscam installation Ubuntu (Ziggo) - Added by Chorfu Ng about 4 years ago

Yes, my problem seems to be in tvh. I was expecting that after completing these steps, tvh would automically start looking for channels specified in dvb scan path on the general tab. Obviously not the case. Im stuck now.

ITO more detail. My setup is Ziggo card (in STB running CCCam) ---> Oscam (on ubuntu pc) ---> tvheadend ---> xbmc. I can supply logs if necessary.

RE: Tutorial: Oscam installation Ubuntu (Ziggo) - Added by Alex . about 4 years ago

Hi Chorfu,

This is probably the wrong place for this discussion but can you post some more details?
Forget about XBMC for now: make sure it first works using the webinterface.

First tell us what does work:
- Did you add the muxes for your location ?
- Can you see the multiplexes under the "dvbinputs, tv adapters, multiplexes"-tab
- Did the initial scan finish ? (under the general settings under tv adapters) (Services, Muxes and Muxes awaiting initial scan ? )

It is important for us to know if you can see the services there ( under dvbinputs, tvadapters).
Once the muxes are recognized and the initial scan is finished, it should find some services.

If not:
- try to leave the dvb-scanpath empty ( i dont use it at all, have Ziggo as well) and go to the DVB-inputs tab to retry adding muxes and allowing for initial scan.

If so: (there are services under the "tv adapters/services" - tab)
- check the settings under CSA. Is the line "Green", indiocating oscam is recognized?
- play a channel, and look at the output in the systemlog-area of the webinterface ( click on the arrows on the bottem right of your screen to enlarge).

If not, try to remove all muxes and add them again per your location ( ziggo area is included).

I hope this gives some directions,

Alex.

RE: Tutorial: Oscam installation Ubuntu (Ziggo) - Added by Bas K about 4 years ago

I think i know what is wrong because there is a bug in Tvheadend.
First i need to know is your provider Ziggo?
Did you set a Network ID in adapter configuration?
How many muxes do you have in Information and capabilities?
Does it find any services?

Oscam is only needed when mapping services to channels and for watching TV.

RE: Tutorial: Oscam installation Ubuntu (Ziggo) - Added by Chorfu Ng about 4 years ago

After another wasted few hours its clear the bug is with me. My ziggo card sits in a dreambox - and I discovered tvh cant communicate with dreambox (even through oscam). So no surprise that no dvb adapter was being recognized. So the answer to your reply is that I havent even got to the stage of initial scanning. Have been chasing my tail now with vtuner to create a virtual connection but my limited coding has put paid to that. Seems my only option is to get a smartcard reader instead. Back to the drawing board.

RE: Tutorial: Oscam installation Ubuntu (Ziggo) - Added by Alex . about 4 years ago

Chorfu Ng wrote:

After another wasted few hours its clear the bug is with me. My ziggo card sits in a dreambox -

Ok, but is this dreambox also the dvb-adapter you use? (i dont know if this is possible?)
In that case, shouldn't it provide decrypted channels ?

I use a smargo smartreader (think it is calles something like that) to read my ziggo card.

Alex.

RE: Tutorial: Oscam installation Ubuntu (Ziggo) - Added by Süheyl Karakas almost 4 years ago

Hi,

I've installed Oscam and Tvheadend on XBMCbuntu. Somehow, I cannot get the scrambled channels descrambled. I've even tried to connect with my client to my brothers server using his config files. All with the same result: Descrambled channels work fine, when I switch to scrambled I get an access denies message...

This is what is see in the logging. "Nederland 1 HD" is not scrambled, and from there on switching to scrambled channels, and back to Nederland 1.

Sep 03 14:15:58.201 subscription: "192.168.1.26 [ xbmc | XBMC Media Center ]" subscribing on "Nederland 1 HD", weight: 150, adapter: "DDbridge_02", network: "", mux: "794,000 kHz", provider: "Ziggo", service: "Nederland 1 HD", quality: 24
Sep 03 14:17:01.198 subscription: "192.168.1.26 [ xbmc | XBMC Media Center ]" unsubscribing from "Nederland 1 HD"
Sep 03 14:17:01.282 subscription: "192.168.1.26 [ xbmc | XBMC Media Center ]" subscribing on "HISTORY HD", weight: 150, adapter: "DDbridge_02", network: "", mux: "562,000 kHz", provider: "Ziggo", service: "HISTORY HD", quality: 100
Sep 03 14:17:04.053 cwc: Can not descramble service "HISTORY HD", access denied (seqno: 1847 Req delay: 4 ms)
Sep 03 14:17:48.226 subscription: "192.168.1.26 [ xbmc | XBMC Media Center ]" unsubscribing from "HISTORY HD"
Sep 03 14:17:48.281 subscription: "192.168.1.26 [ xbmc | XBMC Media Center ]" subscribing on "Discovery Channel HD", weight: 150, adapter: "DDbridge_02", network: "", mux: "498,000 kHz", provider: "Ziggo", service: "Discovery Channel HD", quality: 32
Sep 03 14:18:01.602 cwc: Can not descramble service "Discovery Channel HD", access denied (seqno: 1853 Req delay: 4 ms)
Sep 03 14:30:11.492 subscription: "192.168.1.26 [ xbmc | XBMC Media Center ]" unsubscribing from "Discovery Channel HD"
Sep 03 14:30:11.566 subscription: "192.168.1.26 [ xbmc | XBMC Media Center ]" subscribing on "Nederland 1", weight: 150, adapter: "DDbridge_02", network: "", mux: "618,000 kHz", provider: "Ziggo", service: "Nederland 1", quality: 74

This is what I see in oscam.log:

2013/09/03 14:13:19 A0C94C0 c >> OSCam << cardserver log switched, version 1.20-unstable_svn, build #0 (i686-pc-linux)
2013/09/03 14:13:19 A0C94C0 c version=1.20-unstable_svn, build #0, system=i686-pc-linux, nice=-1
2013/09/03 14:13:19 A0C94C0 c client max. idle=120 sec, debug level=0
2013/09/03 14:13:19 A0C94C0 c max. logsize=10 Kb, loghistorysize=4096 bytes
2013/09/03 14:13:19 A0C94C0 c client timeout=5000 ms, fallback timeout=2500 ms, cache delay=0 ms
2013/09/03 14:13:19 A0C94C0 c tvheadend (0604&000000/00D7/44:6F74): found (333 ms) by ziggo (of 1 avail 1)
2013/09/03 14:13:44 A0C94C0 c tvheadend (0604&000000/00D7/44:C7DE): found (332 ms) by ziggo (of 1 avail 1)
2013/09/03 14:14:09 A0C94C0 c tvheadend (0604&000000/00D7/44:72A7): found (334 ms) by ziggo (of 1 avail 1)
2013/09/03 14:14:34 A0C94C0 c tvheadend (0604&000000/00D7/44:A02D): found (336 ms) by ziggo (of 1 avail 1)
2013/09/03 14:14:35 A0C94C0 c tvheadend (0604&000000/5DC1/44:6517): found (326 ms) by ziggo (of 1 avail 1)
2013/09/03 14:14:35 A0C94C0 c tvheadend (0604&000000/5DC1/44:928A): rejected reader peer (559 ms) by ziggo (of 1 avail 1)
2013/09/03 14:14:59 A0C94C0 c tvheadend (0604&000000/5DC1/44:B0E5): rejected reader peer (0 ms) by ziggo (of 1 avail 1)
2013/09/03 14:14:59 A0C94C0 c tvheadend (0604&000000/5DC1/44:4006): rejected reader peer (0 ms) by ziggo (of 1 avail 1)
2013/09/03 14:15:24 A0C94C0 c tvheadend (0604&000000/5DC1/44:3DBC): rejected reader peer (0 ms) by ziggo (of 1 avail 1)
2013/09/03 14:15:24 A0C94C0 c tvheadend (0604&000000/5DC1/44:0DBA): rejected reader peer (0 ms) by ziggo (of 1 avail 1)
2013/09/03 14:15:49 A0C94C0 c tvheadend (0604&000000/5DC1/44:7AAB): rejected reader peer (1 ms) by ziggo (of 1 avail 1)
2013/09/03 14:17:01 A0C94C0 c tvheadend (0604&000000/5DC1/44:FB7C): found (333 ms) by ziggo (of 1 avail 1)
2013/09/03 14:17:02 A0C94C0 c tvheadend (0604&000000/5DC1/44:07EF): rejected reader peer (538 ms) by ziggo (of 1 avail 1)
2013/09/03 14:17:04 A0C94C0 c tvheadend (0604&000000/5DC1/44:FF50): rejected reader peer (2 ms) by ziggo (of 1 avail 1)
2013/09/03 14:17:04 A0C94C0 c tvheadend (0604&000000/5DC1/44:BDD6): rejected reader peer (0 ms) by ziggo (of 1 avail 1)
2013/09/03 14:17:29 A0C94C0 c tvheadend (0604&000000/5DC1/44:6FD2): rejected reader peer (0 ms) by ziggo (of 1 avail 1)
2013/09/03 14:17:29 A0C94C0 c tvheadend (0604&000000/5DC1/44:5B0F): rejected reader peer (1 ms) by ziggo (of 1 avail 1)
2013/09/03 14:17:48 A0C94C0 c tvheadend (0604&000000/00EF/44:4957): found (337 ms) by ziggo (of 1 avail 1)
2013/09/03 14:17:49 A0C94C0 c tvheadend (0604&000000/00EF/44:94E9): rejected reader peer (534 ms) by ziggo (of 1 avail 1)
2013/09/03 14:18:01 A0C94C0 c tvheadend (0604&000000/00EF/44:E9D2): rejected reader peer (0 ms) by ziggo (of 1 avail 1)
2013/09/03 14:18:01 A0C94C0 c tvheadend (0604&000000/00EF/44:7D36): rejected reader peer (0 ms) by ziggo (of 1 avail 1)
2013/09/03 14:18:26 A0C94C0 c tvheadend (0604&000000/00EF/44D1A): rejected reader peer (0 ms) by ziggo (of 1 avail 1)
2013/09/03 14:18:26 A0C94C0 c tvheadend (0604&000000/00EF/44:05AF): rejected reader peer (0 ms) by ziggo (of 1 avail 1)
2013/09/03 14:18:51 A0C94C0 c tvheadend (0604&000000/00EF/44:57B3): rejected reader peer (0 ms) by ziggo (of 1 avail 1)

I've been trying to solve this for quite a while now. I hope someone here can help me. I've added the config files and some logging. I don't think it's the config files, as they are the same as my brothers, except for the server ofcourse. His system is working fine.

RE: Tutorial: Oscam installation Ubuntu (Ziggo) - Added by Bas K almost 4 years ago

Is your brothers server in the same local network?
Did you followed my tutorial exactly as explained?
It sounds like a Oscam is not correctly working. Did you add it to code word client. Be sure you get the correct output as shown in the tutorial?

Drop me a pm if you need more help.

RE: Tutorial: Oscam installation Ubuntu (Ziggo) - Added by Süheyl Karakas almost 4 years ago

As I could not find the PM button, I mailed you

RE: Tutorial: Oscam installation Ubuntu (Ziggo) - Added by Kay Jakobs over 3 years ago

Unfortunately I have problem with installing oscam.
I added the oscam ppa repository like described with success but when trying to install with
sudo apt-get install oscam
I get only
E: Paket oscam kann nicht gefunden werden

Does anyone has an idea what could be the problem?

My system is Ubuntu 12.04 LTS Server i386

RE: Tutorial: Oscam installation Ubuntu (Ziggo) - Added by Bas K over 3 years ago

Kay Jakobs wrote:

Unfortunately I have problem with installing oscam.
I added the oscam ppa repository like described with success but when trying to install with
sudo apt-get install oscam
I get only
E: Paket oscam kann nicht gefunden werden

Does anyone has an idea what could be the problem?

My system is Ubuntu 12.04 LTS Server i386

Are you sure you have added the repository as described?
After adding the repository you first need to: sudo apt-get update first.

RE: Tutorial: Oscam installation Ubuntu (Ziggo) - Added by Kay Jakobs over 3 years ago

Thank you for the answer.
I think I did everything well.

Here the steps with output.


[email protected]:~$ sudo apt-add-repository ppa:oscam/ppa
You are about to add the following PPA to your system:
OSCam for debian and ubuntu:
.
- oscam-svn (trunk version)
- oscam (latest stable version)
.
.
.
Press [ENTER] to continue or ctrl-c to cancel adding it
.
gpg: keyring `/tmp/tmpC_GRzd/secring.gpg' created
gpg: keyring `/tmp/tmpC_GRzd/pubring.gpg' created
gpg: requesting key BDBE1D1E from hkp server keyserver.ubuntu.com
gpg: /tmp/tmpC_GRzd/trustdb.gpg: trustdb created
gpg: key BDBE1D1E: public key "Launchpad PPA for OSCam" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
OK


[email protected]:~$ sudo apt-get update
OK http://ppa.launchpad.net precise Release.gpg
OK http://apt.tvheadend.org precise Release.gpg
OK http://de.archive.ubuntu.com precise Release.gpg
OK http://de.archive.ubuntu.com precise-updates Release.gpg
OK http://de.archive.ubuntu.com precise-security Release.gpg
OK http://de.archive.ubuntu.com precise-backports Release.gpg
OK http://apt.tvheadend.org precise Release
OK http://ppa.launchpad.net precise Release
OK http://de.archive.ubuntu.com precise Release
OK http://apt.tvheadend.org precise/main Sources
OK http://ppa.launchpad.net precise/main Sources
OK http://apt.tvheadend.org precise/main i386 Packages
Ign http://apt.tvheadend.org precise/main TranslationIndex
OK http://de.archive.ubuntu.com precise-updates Release
OK http://de.archive.ubuntu.com precise-security Release
OK http://ppa.launchpad.net precise/main i386 Packages
Ign http://ppa.launchpad.net precise/main TranslationIndex
OK http://de.archive.ubuntu.com precise-backports Release
OK http://de.archive.ubuntu.com precise/main i386 Packages
OK http://de.archive.ubuntu.com precise/restricted i386 Packages
OK http://de.archive.ubuntu.com precise/universe i386 Packages
OK http://de.archive.ubuntu.com precise/multiverse i386 Packages
OK http://de.archive.ubuntu.com precise/main TranslationIndex
OK http://de.archive.ubuntu.com precise/multiverse TranslationIndex
OK http://de.archive.ubuntu.com precise/restricted TranslationIndex
OK http://de.archive.ubuntu.com precise/universe TranslationIndex
OK http://de.archive.ubuntu.com precise-updates/main i386 Packages
OK http://de.archive.ubuntu.com precise-updates/restricted i386 Packages
OK http://de.archive.ubuntu.com precise-updates/universe i386 Packages
OK http://de.archive.ubuntu.com precise-updates/multiverse i386 Packages
OK http://de.archive.ubuntu.com precise-updates/main TranslationIndex
OK http://de.archive.ubuntu.com precise-updates/multiverse TranslationIndex
OK http://de.archive.ubuntu.com precise-updates/restricted TranslationIndex
OK http://de.archive.ubuntu.com precise-updates/universe TranslationIndex
OK http://de.archive.ubuntu.com precise-security/main i386 Packages
OK http://de.archive.ubuntu.com precise-security/restricted i386 Packages
OK http://de.archive.ubuntu.com precise-security/universe i386 Packages
OK http://de.archive.ubuntu.com precise-security/multiverse i386 Packages
OK http://de.archive.ubuntu.com precise-security/main TranslationIndex
OK http://de.archive.ubuntu.com precise-security/multiverse TranslationIndex
OK http://de.archive.ubuntu.com precise-security/restricted TranslationIndex
OK http://de.archive.ubuntu.com precise-security/universe TranslationIndex
OK http://de.archive.ubuntu.com precise-backports/main i386 Packages
OK http://de.archive.ubuntu.com precise-backports/restricted i386 Packages
OK http://de.archive.ubuntu.com precise-backports/universe i386 Packages
OK http://de.archive.ubuntu.com precise-backports/multiverse i386 Packages
OK http://de.archive.ubuntu.com precise-backports/main TranslationIndex
OK http://de.archive.ubuntu.com precise-backports/multiverse TranslationIndex
OK http://de.archive.ubuntu.com precise-backports/restricted TranslationIndex
OK http://de.archive.ubuntu.com precise-backports/universe TranslationIndex
OK http://de.archive.ubuntu.com precise/main Translation-de
OK http://de.archive.ubuntu.com precise/main Translation-en
OK http://de.archive.ubuntu.com precise/multiverse Translation-de
OK http://de.archive.ubuntu.com precise/multiverse Translation-en
OK http://de.archive.ubuntu.com precise/restricted Translation-de
Ign http://apt.tvheadend.org precise/main Translation-de_DE
OK http://de.archive.ubuntu.com precise/restricted Translation-en
OK http://de.archive.ubuntu.com precise/universe Translation-de
OK http://de.archive.ubuntu.com precise/universe Translation-en
OK http://de.archive.ubuntu.com precise-updates/main Translation-de
OK http://de.archive.ubuntu.com precise-updates/main Translation-en
Ign http://apt.tvheadend.org precise/main Translation-de
Ign http://apt.tvheadend.org precise/main Translation-en
OK http://de.archive.ubuntu.com precise-updates/multiverse Translation-de
OK http://de.archive.ubuntu.com precise-updates/multiverse Translation-en
OK http://de.archive.ubuntu.com precise-updates/restricted Translation-de
OK http://de.archive.ubuntu.com precise-updates/restricted Translation-en
OK http://de.archive.ubuntu.com precise-updates/universe Translation-de
OK http://de.archive.ubuntu.com precise-updates/universe Translation-en
OK http://de.archive.ubuntu.com precise-security/main Translation-en
OK http://de.archive.ubuntu.com precise-security/multiverse Translation-en
OK http://de.archive.ubuntu.com precise-security/restricted Translation-en
OK http://de.archive.ubuntu.com precise-security/universe Translation-en
Ign http://ppa.launchpad.net precise/main Translation-de_DE
OK http://de.archive.ubuntu.com precise-backports/main Translation-en
OK http://de.archive.ubuntu.com precise-backports/multiverse Translation-en
OK http://de.archive.ubuntu.com precise-backports/restricted Translation-en
Ign http://ppa.launchpad.net precise/main Translation-de
OK http://de.archive.ubuntu.com precise-backports/universe Translation-en
Ign http://ppa.launchpad.net precise/main Translation-en
Paketlisten werden gelesen... Fertig


[email protected]:~$ sudo apt-get install oscam
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut
Statusinformationen werden eingelesen... Fertig
E: Paket oscam kann nicht gefunden werden

It seems the only package which is found is oscam-picons

[email protected]:~$ sudo apt-cache search oscam
oscam-picons - Picons for Open Source Conditional Access Modul (OSCam)

Could be the locale setting of de_DE might be the reason?

RE: Tutorial: Oscam installation Ubuntu (Ziggo) - Added by Bas K over 3 years ago

what happens when you do: sudo apt-get install oscam-svn

RE: Tutorial: Oscam installation Ubuntu (Ziggo) - Added by Kay Jakobs over 3 years ago

To be sure it's not the locale setting of my system I changed it to en_US.UTF8 but after

sudo apt-get update
.
.
.


[email protected]:~$ sudo apt-get install oscam
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package oscam
[email protected]:~$ sudo apt-get install oscam-svn
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package oscam-svn is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
.
E: Package 'oscam-svn' has no installation candidate

RE: Tutorial: Oscam installation Ubuntu (Ziggo) - Added by Bas K over 3 years ago

Reinstall the system and try again. I don't think locale settings does matter in this case.

(1-16/16)