yashsingh1/xdaforums huggingface dataset:
[Shield Android TV General] demotomohiro:
I can find /arch/arm64/boot/dts/tegra210-foster-e-*.dts files in linux-3.10 which is the kernel used in L4T R24.2.1.

http://nv-tegra.nvidia.com/gitweb/?p=linux-3.10.git;a=tree;h=6132d7a86f3e38e77848bbf59280d10f0e19bfff;hb=4206e3f9c9b3a1757c36bb798ca751c09e2db8c5

In linux-4.4.git, dts files are moved to other repository.

dts files for Jetson TX1 were moved to:

http://nv-tegra.nvidia.com/gitweb/?p=device/hardware/nvidia/platform/t210/jetson.git;a=tree;h=refs/heads/l4t/l4t-r28.1;hb=l4t/l4t-r28.1

And following repositories have dtsi files.

[device/hardware/nvidia/platform/tegra/common.git]

[device/hardware/nvidia/soc/t210.git]

[device/hardware/nvidia/platform/t210/common.git]

I cannot find tegra210-foster-*.dts files in their repository.

This dtsi file looks like related to Shield.

[device/hardware/nvidia/soc/t210.git]/kernel-dts/tegra210-soc/tegra210-soc-shield.dtsi

If there is no dts files for Shield and dtb files in prevous l4t are not compatible to linux-4.4, there is no way to use l4t 28.1 in Shield?
[Shield Android TV General] yahoo2016:
There are ways to use L4T28.1 for SATV, e.g., comparing dtsi in L4T24.2.1 for SATV and Jetson TX1 and use the differences to modify dtsi in L4T28.1 for Jetson TX1 or compile and try the "tegra210-soc-shield.dtsi".

Since replacing dtb could brick SATV 16GBs, I'd recommend back up HDD of SATV Pro and try new kernel and dtb on SATV Pro.
[Shield Android TV General] chtulu:
Well, I guess that the dtb is only needed for the old shield tv. The sda1 boot.img 28.2 works fine on mine shield tv 2017, using fastboot boot boot.img and I did not flash the dtb file, but I must have made a mistake and now I got a bootloop for android.
[Shield Android TV General] yahoo2016:
Did you make sda1 boot.img 28.2 from L4T 28.x source?

I do not have SATV 2017, but as you described, dtb of SATV 2017 may be compatible with L4T 28.x.
[Shield Android TV General] chtulu:
Well, initially I tried your sda1 boot.img, but the kernel restarted after 30 seconds due to panic, so I took apart the boot.img and created a new inetramfs and it worked. I was able to see the Ubuntu desktop (your zImage + my initramfs + rootfs 24.2.1 + no flashing of dtb). Unfortunately I made the mistake of leaving the mounting of partition 29 in the init.c, so both sda1 and partition 29 were mounted and then I switched off the shield. This may have caused the shield to reboot every time after the Nvidia logo, when using the shield normally as android. I did try to make the kernel from L4T 28.2.1 source but I did not know that I had to put some cmdline in the config file in order for the kernel to show what happens on the console, so my kernel did not work or maybe worked, I do not know since I can not see anything and I tested without putting the usb (rootfs) in, so even if it worked I would have not be able to see the desktop.

What I think is that the flashing of the dbt is necessary in older ROM (I use the latest ROM 5.2), that is because in older ROM you had to flash the dtb also. I'm now trying to get the android back and then I will work on L4T 28.1.

Another thing, that I noticed, is that there are two partitions concerning the rootfs, the APP partition, which contains the rootfs and the UDA partition, which should be empty and used as data space, so the rootfs should go in the APP partition and not the UDA partition, in the shield 2017 APP -> mmcblk0p19 and UDA -> mmcblk0p33
[Shield Android TV General] wouter1971:
Hi everyone, my idea is to use the (to buy) Shield TV 2017 only as a Ubuntu only system with tvheadend / oscam and plex media server with hardware assisted transcoding. And leave it as a headless system somewhere in the house. Is this possible? I cannot get this clear from this thread. Any advise is appreciated.
[Shield Android TV General] win_nt:
my report:

satv 2015 16GB (android 7)

last update change dts to 24.00.2015.42-t210-fcf112d9 from 24.00.2015.42-foster-t210-b26a161f (cboot)

sda1.img

boot from usb flash (usb3.0)

L4T 28.1 and driver 28.1 - kernel panic. restart 30 seconds.

boot from hdd drive (usb3.0)

boot ok, but stuck on nvidia script init.

L4T 24.2.1 and driver 24.2.1

Work fine! but after update & upgrade system libc6-bin seg fault.

L4T 28.1 and driver 24.2.1

Work fine!. update & upgrade work fine. w/o hold xorg-core worked fine to.

on all versions Does not work wifi
[Shield Android TV General] tutysara:
I am also trying to get answers to the same thing. Also interested in knowing if it allows running tensor flow for some small deep learning models.
[Shield Android TV General] MartiniGM:
Linux For Tegra R28.1 /kernel 4.4.15 for our device?

Am I going crazy or have NVidia finally released updated developer software for our hardware?

https://developer.nvidia.com/embedded/linux-tegra
[Shield Android TV General] yahoo2016:
L4T R28.1 (Jetpack 3.1) is for Jetson TX1/TX2. SATVs and TX1s have the same X1 SOM (system on module) but different hardware and therefor different device tree.

L4T R24.2.1 and earlier have Device Tree source code for SATVs. It doesn't seem R28.1 includes Device Tree source code for SATVs

Jetson TX1/TX2 use Uboot, the SOM is in developer mode (no private key) and therefor can not be bricked due to wrong device tree, kernel and other partitions.

SATVs can be bricked if some partitions are flashed with wrong files. There are many posts about bricked SATVs.
[Shield Android TV General] demotomohiro:
Using SATV with L4T as headless system is easy.

At least, my SATV (2015 16GB L4T R24.2.1) is only connect to LAN and power cable.

It works without HDMI display and I can access to it using ssh.

I just installed L4T R24.2.1 to my SATV and it worked as headless system.

I added some kernel options and built kernel from source code, but I don't think kernel build is not required to make headless system.

I don't know about oscam or plex media server.

If they are not provided by ubuntu repository, you might need to build them from source code.

Same kernel and ubuntu of Jetson TX1 is working on SATV with L4T R24.

If you can find instructions for Jetson TX1, it might also works on SATV.

This instructions is written for JetsonTK1 but it might help you to find out how to install plex on your SATV.

https://devtalk.nvidia.com/default/topic/777229/embedded-systems/running-plex-media-server-pms-on-the-tk1/
[Shield Android TV General] chtulu:
Do you mean source kernel L4T 28.1 and ROOTFS 28.2.1?

What about the DTB file?
[Shield Android TV General] wouter1971:
Thankyou, all is available on ubuntu repository or can be compiled. If hardware transcoding is working too that would be awesome.
[Shield Android TV General] win_nt:
I mean Sample Root Filesystem 28.1(developer.nvidia.com/embedded/dlc/l4t-sample-root-filesystem-28-1) and Driver Packages (developer.nvidia.com/embedded/dlc/l4t-jetson-tx1-driver-package-24-2-1) from archive.

I don't flash DTB file.
[Shield Android TV General] chtulu:
So, what boot image have you used? The one attached on the first page?
[Shield Android TV General] win_nt:
yep, sda1.img from first page. thx to yahoo2016 :)
[Shield Android TV General] chtulu:
Yes, after trying yours, I decided to make mine by first compiling the L4T 24.2.1 source, but I did not test the whole thing, I mean source + FS, since I was only interested to check if kernel 24.2.1 worked.

I wanted the latest L4T, the 28.1, so I compiled the L4T 28.1 source, I tried everything but the shield reboot after the Nvidia logo, and I do not know if is the DBT file or not, I suspect there must be some check at Cboot level.

I tried to decompile and modify a dtb file from 28.1 but did not work the shield does not go further then the Nvidia logo, flashing a DTB that is not right does not brick the device, it just stay on the Nvidia logo, then you can either fastboot flash dtb right file or reset the shield.

As for the L4T 28.2.1, there is no need to flash the DTB file, since the one that is already there is ok and there is no need to CONFIG_ANDROID = yes.
[Shield Android TV General] chtulu:
You do not need to have CONFIG_ANDROID = yes.

On the shield tv 2017 it reboot after showing the Nvidia Logo.

It's hard to tell if is due to the DTB or something else.

After "[0025.329] BPMP-FW Carveout: Base = 0xff2c0000 and Size = 0x40000" should start the kernel:

[ 0.000000] Initializing cgroup subsys cpu

[ 0.000000] Initializing cgroup subsys cpuacct

[ 0.000000] Linux version 4.4-......... () (gcc version ...... 20140514 (prerelease) (GCC) ) #1 SMP PREEMPT

[ 0.000000] CPU: Cortex A57 Processor [411fd071] revision 1

[ 0.000000] alternative: enabling workaround for ARM erratum 832075

[ 0.000000] Machine: jetson_cv

[ 0.000000] bootconsole [earlycon0] enabled

......

......

......

Try with the kernel 28.1.2 and see what comes after that line in the log.
[Shield Android TV General] yahoo2016:
How did you know you don't need "CONFIG_ANDROID=y"? That's the only change needed to make L4T24.2.1 kernel work for SATV. In your above post, you have "Machine: jetson_cv", in my working L4T 24.2.1 kernel for SATV 2015 Pro, I have "Machine: foster_e_hdd":

[0051.490] BPMP-FW Carveout: Base = 0xff2c0000 and Size = 0x40000

Reboot to L4T24.2.1 kernel

[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Initializing cgroup subsys cpuacct
[ 0.000000] Linux version 3.10.96 (ubuntu@ubuntu-HP-ZBook-15) (gcc version 4.8.2 (GCC) ) #2 SMP PREEMPT Wed Nov 9 06:42:42 EST 2016
[ 0.000000] CPU: Cortex A57 Processor [411fd071] revision 1
[ 0.000000] alternative: enabling workaround for ARM erratum 832075
[ 0.000000] Machine: foster_e_hdd
[ 0.000000] Reserved memory: initialized node iram-carveout, compatible id nvidia,iram-carveout

"foster" is for SATV, "jetson_cv" is for Jetson TX1.
[Shield Android TV General] chtulu:
The above log is an example of what should happen after the line BPMP-FW......

is not my log, I found somewhere to see what should happen after that line.

How do I know that you do not need CONFIG_ANDROID = y?

Well, after trying your sda1.img and then compiled mine from L4T 24.2.1 I wanted to check if you really needed what other in this forum were saying about the .config file, so I tried with CONFIG_ANDROID = n and it worked, at least on shield TV 2017.

Another thing I tried is to generate a bugreport for the android and I got all the command line which are:

console=tty0 console=ttyUSB0,115200n8 androidboot.modem=none androidboot.serialno=0324616166364 androidboot.security=enabled tegraid=21.1.2.0.0 ddr_die=1536M@2048M ddr_die=1536M@3584M section=256M memtype=0 vpr_resize usb_port_owner_info=1 lane_owner_info=0 emc_max_dvfs=1 touch_id=0@63 video=tegrafb no_console_suspend=1 console=ttyS0,115200n8 debug_uartport=lsport,2 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=0x1000@0xff2bf000 nvdumper_reserved=0xff23f000 core_edp_mv=1075 core_edp_ma=4000 tegra_fbmem=0x800000@0x92ca0000 is_hdmi_initialised=1 gpt android.kerneltype=normal androidboot.touch_vendor_id=0 androidboot.touch_panel_id=63 androidboot.touch_feature=0 androidboot.orientation=0 androidboot.verifiedbootstate=orange androidboot.bootloader=24.00.2015.42-t210-e3360677

The only two to avoid for linux kernel are:

video=tegrafb and tegra_fbmem=0x800000@0x92ca0000

I also tried to compile the L4T 24.2.1 kernel with exactly the same CONFIG_...... options of the android kernel, but I could not compile it, it gaves an error on tcp.o

..And yes I know Shield TV 2015 is foster and Shield TV 2017 is darcy.

When it reboots it says: Power-up reason: software reset, but I could not find anything more about that.

If you are running a serial console at all times, then run "dmesg --follow", with that you can see the

the final dmesg lines as the reboot occurs
[Shield Android TV General] MartiniGM:
I used to run Ubuntu from a SDXC-card on my Shield pro using your bootimage. But the old bootimage doesn't work with 28.1. Can you make new bootimages?
[Shield Android TV General] yahoo2016:
I updated my SATV Pro 2015 to ROM 5.2 and did not replace dtb. The old boot image (e.g., mmcblk1p1.img) worked for L4T 24.2.1 rootfs.

I tried rootfs L4T 28.1 from Jetpack 3.1 on SD card of SATV Pro using the old mmcblk1p1.img and was able to load Ubuntu 16. It took few minutes to load L4T 28.1 rootfs.

L4T28.1 rootfs was created by Jetpack 3.1, I didn't have to apply binary to it.

The old boot images are based on L4T 24.2.1 which has the same Linux kernel version of 3.10.96 as SATV ROM 5.2.

L4T 28.1 has kernel 4.4, it doesn't seem anyone has L4T28.1 kernel working for SATV.
[Shield Android TV General] chtulu:
The only way to get the kernel 28.1 working is to flash the bpmp.bin of 28.1.

I tried but fastboot does not recognize the partition, so, will see.....
[Shield Android TV General] yahoo2016:
You could boot to Ubuntu on SD card and use "dd" to write any partition on emmc, but it could brick SATV 16 GB if the wrong partition or wrong data is written.

I'm not sure bpmp.bin of L4T R28.1 for Jetson TX1 is compatible with SATV.

L4T R28.1 kernel could work for the next release of SATV ROM.
[Shield Android TV General] chtulu:
Well, dd works from shield tv android, but I am not sure what dd will do with the binary file.

Yes bpmp.bin of L4T R28.1 is compatible, because what I have done is to compare the android bpmp.bin with the bpmp.bin of L4T R24.2.1 and they are the some, but the bpmp.bin of L4T R28.1 is different and that is why I think the L4T R28.1 kernel does not boot.

If the bpmp.bin of L4T R28.1 has been updated, there must be a reason.
[Shield Android TV General] yahoo2016:
"dd" can be used to read and write any partition of SATV to and from binary file, partition table can be found from the last part of emmc, this thread is for SATV Pro, but the procedure is similar for SATV 16 GB:

https://xdaforums.com/shield-tv/general/guide-migrate-to-ssd-hdd-size-satv-pro-t3440195

I recommend only read partitions of SATV 16 GB for analysis. Write SATV 16GB EMMC using "dd" could brick it.
[Shield Android TV General] chtulu:
I know that, I had already dumped the bpmp partition, but than I changed my mind, because I do not know if I would have got what I wanted by doing dd if of count=size of bpmp.bin

The only way to brick the SATV is if you mess up with the cboot partition, as long as you do not touch it, you will be safe because fastboot is there.
[Shield Android TV General] chtulu:
Ok, what I have done is dd conv=notrunc if=bpmp.bin of=/dev/block/mmcblk0p1 but android dd does not allow you to use the conv option with dd, so I dump the image of mmcblk0p1 and dd conv=notrunc if=bpmp.bin of="dump image of mmcblk0p1" and it worked, I mean android worked with the new bpmp from L4T 28.1, but linux still refuse to boot, so at this time I think next step is to generate a dtb file for L4T.
[Shield Android TV General] dronus2:
2017 hardware?

I've converted some shield tvs to Ubuntu this way and I am very happy with them. However, as of today, it is more likely to get a new 2017 style hardware. Which if I get it right misses both the OTG and SD interfaces. Is this right? And if, would there be an alternative method to upload a new kernel to the machine?
[Shield Android TV General] tegrategra:
I can boot 28.1 fs with 28.1 binaries applied, but x11 doesn't work. Running from sd card with yahoo2016's mmcblk1p1.img.

Normal Linux bootup until X and then just a black screen. Headless ssh access however works headless after. Cuda samples freeze.

I have shield tv 2015, 16gb, dev rom 5.2
[Shield Android TV General] chtulu:
Can you try with the old kernel and then see the difference between the two logs, the 28.1 and the 24.2.1 uart logs?
[Shield Android TV General] chtulu:
Since you have UART available, there is another way to see if the kernel crashes before initializing the console, add earlyprintk=uart8250-32bit,0x70006000 to the kernel command line and ensure that earlyprintk is enabled in the .config file at kernel hacking > early printk
[Shield Android TV General] MartiniGM:
Don't mean to be insulting.… but we've been using Tegra 4 Linux 24.2.1 for... ages.. Does 28.1.0 work?
[Shield Android TV General] yahoo2016:
I had installed CUDA 8.0 on several SATV Pro 2015s with ROM 3.2. Replacing SATV dtb with dtb from L4T24.2.1 is needed for SATV ROM 3.2.

I used L4T 24.2.1 (Jetpack 2.3.1) to push CUDA from Ubuntu laptop to SATV 2015 through Ethernet. You can use Jetpack to install CUDA on SATV the same way to install CUDA on Jetson TX1. You need to change "Flash OS" to "no action" when install CUDA on SATV using Jetpack.

After updating my SATV Pro 2015 to ROM 5.2 without replacing dtb, L4T24.2.1 rootfs works with kernel images from the first post, but pre-built CUDA 8.0 samples from L4T24.2.1 did not work as I tested yesterday. I rebuilt CUDA 8.0 samples (e.g., boxFilter) from L4T 24.2.1 today on SATV Pro 2015 with ROM 5.2 and they worked.

I recommend using L4T 24.2.1 (Jetpack 2.3.1) rootfs with kernel images from the first post.

Results of L4T 28.1 rootfs with L4T24.2.1 kernel are mixed.
[Shield Android TV General] :
1. This doesn't work on mg shield the screen just flashes white

2. Anything I can do to help with 28.1, can try UART if necessary
[Shield Android TV General] chtulu:
The problem with 28.1 kernel seems to be beyond UART, I tried with a 28.1 dtb file, but it does not go past the NVIDIA logo. The problem seems unsolvable.
[Shield Android TV General] HunterHero:
I had the same problem with cuda not working on 28.1. Switching to L4T 24.2.1 (Jetpack 2.3.1) fixed everything. Thanks everyone!
[Shield Android TV General] ericvh:
Sort of working

Okay, I've just gone through this with a 500GB Nvidia Shield TV and it seems to boot, finds the root and then at some point in init drops me to a blank screen with a cursor. USB is getting power (mouse is lit) but keyboard is unresponsive (tried with multiple keyboards). I was basing this off 28.1 and did not reflash my dtb. Guidance?

-eric
[Shield Android TV General] chtulu:
28.1 means kernel 28.1 not mix and match (e.g. 24.2.1 kernel and 28.1 file system)
[Shield Android TV General] yahoo2016:
I don't believe anyone has L4T28.1 kernel working for SATVs.

The images from the first post are kernels based on L4T24.2.1 and should only be used with L4T24.2.1 rootfs.

Using rootfs from L4T28.1 with kernels based on L4T24.2.1 produced mixed results.

Rootfs from L4T24.2.1 is Ubuntu 16.04 LS, I do not see advantage of using rootfs from L4T28.1 for SATV unless L4T28.1 kernel is working.
[Shield Android TV General] ericvh:
Reverting back to LT24.2.1 everywhere I get an error on trying to access root disk:

JBD2: Unrecognized features on journal

EXT4-fs (mmcblk1p1): error loading journal

and then kernel panic...

It's a 64GB Sdcard, I double checked it on a host -- fsck shows no errors and it mounts just fine.
[Shield Android TV General] yahoo2016:
My SATVs do not work for U3 SD cards. Have you tried U1 SD card or SD cards in USB adapter?
[Shield Android TV General] yahoo2016:
"Host PC running Ubuntu Linux version 14.04 is recommended" by Nvidia:

https://developer.nvidia.com/embedded/linux-tegra

I'm not sure if Nvidia has tested their kernel source and sample rootfs with Ubuntu 15.
[Shield Android TV General] yahoo2016:
I installed Ubuntu 15.10 and tried to run "source first.sh" included in my patched CM 12.1 kernel source and got few errors from source in "drivers/iio/light" due to "struct" to "void" cast warning treated as error.

I commented out "ccflags-y += -Werror" and was able to build kernel using Ubuntu 15.10 cross compilers .
[Shield Android TV General] crnkoj:
yeah i tested this both on ubuntu 64 15.10 and 14.04, 14.04 compiles without issues, 15.10 fails at several points. so i guess we shoudl stay at 14.04, i assume its the gcc used as 15.10 sues 5.2 (or even 5.3 if im not mistaken) and 14.04 uses 4.8. I tried compiling the nvidia sources for android on both as well and on 14.04 it compiles fine, whilst on 15.10 it fails.
[Shield Android TV General] yahoo2016:
As I mentioned here

http://xdaforums.com/showpost.php?p=64549690&postcount=42

Default cross compiler in Ubuntu 15.10 package produced more warnings and some of the Makefiles in CM 12.1 have "+Werror" to treat warnings as errors. If the developers are more careful about data casting, it won't be a problem.

I made a simple change to one of the makefiles to disable "Werror" and was able to compile CM 12.1 using Ubuntu 15.10.

CM 12.1 had few other errors when build using Ubuntu 14.04 and had to be patched.
[Shield Android TV General] crnkoj:
sorry i missed that.
[Shield Android TV General] yahoo2016:
In case you (and others) want to use Ubuntu 15.10, I updated the link in first post to patched CM 12.1 kernel source, i.e.,

https://drive.google.com/open?id=0Bz5kaPQJx_AgejJJVzJ0WkV6STQ
[Shield Android TV General] crnkoj:
as a matter of fact it works well. perhaps it would be wiser to put all this on a github account? for the sake of tracking?
[Shield Android TV General] yahoo2016:
I do not have a github account, I'll try to create one.
[Shield Android TV General] crnkoj:
i believe the basic ones are for free. its just an idea, might be easier for you and all to follow as well.
[Shield Android TV General] yahoo2016:
It seems the free one does not allow own repository. I was thinking of adding a new issue to CM 12.1 repository such that the patch will be included in future versions of CM.
[Shield Android TV General] crnkoj:
hmm weird,

i think i used bitbucked some time ago and it was possible to have own repository on free one https://bitbucket.org/
[Shield Android TV General] jmtatsch:
I'm stuck at booting the created boot.img

root@vagrant-ubuntu-trusty-64:/home/vagrant/cmOutDir1# fastboot boot boot.img

downloading 'boot.img'...

OKAY [ 4.926s]

booting...

OKAY [ 0.005s]

finished. total time: 4.933s

Fastboot then just freezes up, and nothing happens anymore. Could someone share a working boot.img created like in this thread? My bootloader is unlocked but the device is not "rooted", that is enough right? any ideas what could be wrong?
[Shield Android TV General] yahoo2016:
Can you try this "boot.img"

https://drive.google.com/open?id=0Bz5kaPQJx_AgZWZza3FqUXRVeEk

You only need to unlock boot loader and enable debug mode, you don't need to install twrp or superSu.

After "fastboot boot boot.img" you should see NVIDIA logo for few seconds, then the screen should turn black for 10's seconds depending speed of SD card, before Ubuntu desktop shows up.
[Shield Android TV General] yahoo2016:
I found newer cm13.0 branch

https://github.com/CM-Shield/android_kernel_nvidia_foster/tree/cm-13.0

and will try it.

I was able to build kernel using cm-13.0 source and created an issue on github:

https://github.com/CM-Shield/android_kernel_nvidia_foster/issues/1

The same patch included in above link works for cm-12.1 and cm-13.0.
[Shield Android TV General] jmtatsch:
Thank you yahoo2016, but even with your boot.img my issue stays exactly the same. One more question, i was forced to upgrade to fw 2.1 ... could that be the culprit? Wasn't there something like

fastboot boot boot.img

doesn't work anymore with 1.4+? Should I go back to 1.3? or directly

fastboot flash recovery boot.img

?
[Shield Android TV General] yahoo2016:
It has been reported "fastboot boot boot.img" doesn't work for SW 2.1.

When I received my Shield TV, I was automatically updated to SW 2.1, I downgraded to 1.3.

You could try "fastboot flash recovery boot.img" first to make sure "boot.img" and rootfs work. I and others had issues with "fastboot flash recovery boot.img" and SW 2.1, i.e., the "boot.img" in recovery partition always gets overwritten during the next power cycle.

I end up with flashing my "boot.img" to "boot" partition and flashing stock "boot.img" to "recovery" partition.

2 weeks ago, I bricked my Shield TV by flashing Nvidia official rooted ROM 2.1, Nvidia Customer Care sent me RMA with prepaid shipping label, but it still takes weeks to get bricked shield TV replaced.

In my opinion, bootloader comes with SW 2.1 is like a time bomb.