Git Product home page Git Product logo

openwebrx's Introduction

OpenWebRX

OpenWebRX is a multi-user SDR receiver software with a web interface.


⚠️ From 2019-12-29 OpenWebRX development is discontinued. ⚠️

I'm would like to say a big thanks to everyone who supported me during this project, including those who contributed either code or donations. It has been a very fruitful 6 years, but now it's time to move on to other projects. See also my blog about that.

(@simonyiszk, please keep this GitHub repo for historic purposes.)

Know limitations of the last version:

  • Python 2.7, a main dependency of the project, will be not be officially maintained from 1 January 2020. By time, probably it will not be secure to use this version on public servers, unless someone still provides security patches for Python 2.
  • Some specific parts of the DSP code could be improved for better SNR.

Even though these limitations are probably acceptable in an amateur radio project, I would not build critical infrastructure on it.

For commercial inquiries (e.g. if someone wants me to develop an improved version without these limitations), I'm still open, drop me an e-mail.


💾 Setup guide for Ubuntu | 📘 Knowledge base on the Wiki | 🌎 Receivers on SDR.hu

OpenWebRX

It has the following features:

  • csdr based demodulators (AM/FM/SSB/CW/BPSK31),
  • filter passband can be set from GUI,
  • waterfall display can be shifted back in time,
  • it extensively uses HTML5 features like WebSocket, Web Audio API, and <canvas>,
  • it works in Google Chrome, Chromium (above version 37) and Mozilla Firefox (above version 28),
  • currently supports RTL-SDR, HackRF, SDRplay, AirSpy and many other devices, see the OpenWebRX Wiki,
  • it has a 3D waterfall display:

OpenWebRX 3D waterfall

News (2015-08-18)

  • My BSc. thesis written on OpenWebRX is available here.
  • Several bugs were fixed to improve reliability and stability.
  • OpenWebRX now supports compression of audio and waterfall stream, so the required network uplink bandwidth has been decreased from 2 Mbit/s to about 200 kbit/s per client! (Measured with the default settings. It is also dependent on fft_size.)
  • OpenWebRX now uses sdr.js (libcsdr compiled to JavaScript) for some client-side DSP tasks.
  • Receivers can now be listed on SDR.hu.
  • License for OpenWebRX is now Affero GPL v3.

News (2016-02-14)

  • The DDC in csdr has been manually optimized for ARM NEON, so it runs around 3 times faster on the Raspberry Pi 2 than before.
  • Also we use ncat instead of rtl_mus, and it is 3 times faster in some cases.
  • OpenWebRX now supports URLs like: http://localhost:8073/#freq=145555000,mod=usb
  • UI improvements were made, thanks to John Seamons and Gnoxter.

News (2017-04-04)

  • ncat has been replaced with a custom implementation called nmux due to a bug that caused regular crashes on some machines. The nmux tool is part of the csdr package.
  • Most consumer SDR devices are supported via rx_tools, see the OpenWebRX Wiki on that.

News (2017-07-12)

  • OpenWebRX now has a BPSK31 demodulator and a 3D waterfall display.

When upgrading OpenWebRX, please make sure that you also upgrade csdr!

OpenWebRX servers on SDR.hu

SDR.hu is a site which lists the active, public OpenWebRX servers. Your receiver can also be part of it, if you want.

sdr.hu

Setup

OpenWebRX currently requires Linux and python 2.7 to run.

First you will need to install the dependencies:

After cloning this repository and connecting an RTL-SDR dongle to your computer, you can run the server:

python openwebrx.py

You can now open the GUI at http://localhost:8073.

Please note that the server is also listening on the following ports (on localhost only):

  • port 4951 for the multi-user I/Q server.

Now the next step is to customize the parameters of your server in config_webrx.py.

Actually, if you do something cool with OpenWebRX, please drop me a mail:
Andras Retzler, HA7ILM <[email protected]>

Usage tips

You can zoom the waterfall display by the mouse wheel. You can also drag the waterfall to pan across it.

The filter envelope can be dragged at its ends and moved around to set the passband.

However, if you hold down the shift key, you can drag the center line (BFO) or the whole passband (PBS).

Setup tips

If you have any problems installing OpenWebRX, you should check out the Wiki about it, which has a page on the common problems and their solutions.

Sometimes the actual error message is not at the end of the terminal output, you may have to look at the whole output to find it.

If you want to run OpenWebRX on a remote server instead of localhost, do not forget to set server_hostname in config_webrx.py.

Licensing

OpenWebRX is available under Affero GPL v3 license (summary).

OpenWebRX is also available under a commercial license on request. Please contact me at the address <[email protected]> for licensing options.

openwebrx's People

Contributors

gnoxter avatar ha7ilm avatar tejeez avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openwebrx's Issues

Setting shift for use with Up-Converter?

Hi,

I'm currently using an up-converter (Ham It Up v1.3) to receive signals.

The "Shift" I use within SDR# to have these display correctly is -124,991,371 (screenshot), though the recommended amount is -125,000,000.

Without this shift signals are only accessible at ~125MHz + actual signal frequency, which means the frequencies displayed on my OpenWebRX client UI are ~125MHz above what they really are.

For example: To set the centre frequency of the OpenWebRX to 5505180Hz I have to put 130496551 (124,991,371Hz higher!) as center_freq in config.webrx.py, which allows tuning but displays the incorrect frequencies.

Does OpenWebRX have the ability to implement a shift so that it can work nicely with an UpConverter?

I hope this makes sense, any help is very much appreciated.

Consistently 10kHz off when tuning

I've noticed that when tuning, the reported value is 10kHz lower than the value I'm transmitting on with the radio.

My config is:

DSP/RX settings

dsp_plugin="csdr"
fft_fps=9
fft_size=8192
samp_rate = 2000000
center_freq = 145000000
rf_gain = 5

Thanks,

No Audio

Hello Mauro are IV3SCP
sorry for my English.....
it seems that everything works, I see the signals, but do not feel anything.
I'm using raspberry 2.
What could be the problem?

`OpenWebRX - Open Source SDR Web App for Everyone! | for license see LICENSE file in the package


Author contact info: Andras Retzler, HA7ILM [email protected]

[openwebrx-main] Configuration script not specified. I will use: "config_webrx.py"
[openwebrx-import] Found plugin: plugins.dsp.csdr.plugin
Ncat: Version 6.00 ( http://nmap.org/ncat )
[openwebrx-main] Started rtl_thread: rtl_sdr -s 2048000 -f 145525000 -p 0 -g 0 -| ncat -4l 4951 -k --send-only --allow 127.0.0.1
Found 1 device(s):
0: Generic, RTL2832U, SN: 77771111153705700

Using device 0: Generic RTL2832U
Found Rafael Micro R820T tuner
[R82XX] PLL not locked!
Sampling at 2048000 S/s.
Tuned to 145525000 Hz.
Tuner gain set to automatic.
Reading samples in async mode...
[openwebrx-main] Starting watchdog threads.
[openwebrx-main] Starting spectrum thread.
[openwebrx-spectrum] Spectrum thread initialized successfully.
[openwebrx-dsp-plugin:csdr] Command = sleep 1; ncat -v 127.0.0.1 4951 | csdr convert_u8_f | csdr fft_cc 4096 227555 | csdr logpower_cf -70 | csdr fft_exchange_sides_ff 4096 | csdr compress_fft_adpcm_f_u8 4096
[openwebrx-main] Starting HTTP server.
[openwebrx-spectrum] Spectrum thread started.
Ncat: Version 6.00 ( http://nmap.org/ncat )
Ncat: Connected to 127.0.0.1:4951.
`

Unexpected "client being closed" each few minutes. Broken pipe

First of all congratulations for this project, as far the best web sdr server of much that I tested before.

I'm having a problem with the server online at http://www.merlitec.com:18080,
after some minutes after opening a client, it drops down with this server output:

[openwebrx-httpd] GET /status/ from 152.66.211.30
[openwebrx-httpd] GET /status/ from 152.66.211.30
[openwebrx-httpd] GET /status/ from 152.66.211.30
[openwebrx-httpd] GET /status/ from 152.66.211.30 // STATUS REQUESTS FROM OPENWEBRX
[openwebrx-httpd] client 138.4.36.3#3868f6e9b5e38755998b86834f39cb84 :: client being closed.
[openwebrx-dsp-plugin:csdr] stop() :: unlink failed: /tmp/openwebrx_pipe_1949045104_bpf
[openwebrx-dsp-plugin:csdr] stop() :: unlink failed: /tmp/openwebrx_pipe_1949045104_shift
[openwebrx-dsp-plugin:csdr] stop() :: unlink failed: /tmp/openwebrx_pipe_1949045104_squelch
[openwebrx-dsp-plugin:csdr] stop() :: unlink failed: /tmp/openwebrx_pipe_1949045104_smeter

Exception happened during processing of request from ('138.4.36.3', 49191)
Traceback (most recent call last):
File "/usr/lib/python2.7/SocketServer.py", line 599, in process_request_thread
self.finish_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 334, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/lib/python2.7/SocketServer.py", line 657, in init
self.finish()
File "/usr/lib/python2.7/SocketServer.py", line 716, in finish
self.wfile.close()
File "/usr/lib/python2.7/socket.py", line 279, in close
self.flush()
File "/usr/lib/python2.7/socket.py", line 303, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe

I have good internet connection in the server and client side so, why could be happening?

Thanks indeed and best regards

Notch filter?

I have no idea how the user interface would look, but it would be nice to have a notch or autonotch filter to wipe out noise that's on narrow frequencies.

openwebrx on Mac OS X

Hi
I managed to compile fftw3 and csdr on OS X. Now (like my previous issue), when I go to the webpage, I just have an empty spectrum and no sound. (Also replaced nc with ncat in config_webrx.py)
Can you help me troubleshoot this?
Mac OS X 10.11
fftw 3.3.4 (compiled from source)

Here's the output:

acBook-Pro:openwebrx mehdi$ python openwebrx.py


OpenWebRX - Open Source SDR Web App for Everyone!  | for license see LICENSE file in the package
_________________________________________________________________________________________________

Author contact info:    Andras Retzler, HA7ILM <[email protected]>

[openwebrx-import] Found plugin: plugins.dsp.csdr.plugin
[openwebrx-main] Started rtl thread: rtl_sdr -s 250000 -f 145525000 -p 0 - | ncat -vvl 127.0.0.1 8888
[openwebrx-main] Started rtl_mus.
Ncat: Version 6.47 ( http://nmap.org/ncat )
Ncat: Listening on 127.0.0.1:8888

rtl_mus: Multi-User I/Q Data Server for RTL-SDR v0.22, made at HA5KFU Amateur Radio Club (http://ha5kfu.hu)
    code by Andras Retzler, HA7ILM <[email protected]>
    distributed under GNU GPL v3

2015-10-19 16:30:49,908 INFO Server is UP
Ncat: Connection from 127.0.0.1.
Ncat: Connection from 127.0.0.1:56872.
2015-10-19 16:30:49,917 INFO Server listening on port: 4951
[openwebrx-main] Starting watchdog threads.
[openwebrx-main] Starting spectrum thread.
[openwebrx-spectrum] Spectrum thread initialized successfully.
[openwebrx-dsp-plugin:csdr] Command = sleep 1; nc -v localhost 4951 | csdr convert_u8_f | csdr flowcontrol 3000000 10 | csdr fft_cc 4096 27777 | csdr logpower_cf -70 | csdr fft_exchange_sides_ff 4096 | csdr compress_fft_adpcm_f_u8 4096
[openwebrx-spectrum] Spectrum thread started.
Found 1 device(s):
[openwebrx-main] Starting HTTP server.
function name given in argument 1 does not exist.

function name given in argument 1 does not exist.

found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif lo0
    src 127.0.0.1 port 56873
    dst 127.0.0.1 port 4951
    rank info not available
    TCP aux info available

2015-10-19 16:30:51,898 INFO client accepted: [email protected]:56873  users now: 1
function name given in argument 1 does not exist.

Connection to localhost port 4951 [tcp/pwgwims] succeeded!
  0:  Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Exact sample rate is: 250000.000414 Hz
[R82XX] PLL not locked!
Sampling at 250000 S/s.
Tuned to 145525000 Hz.
Tuner gain set to automatic.
Reading samples in async mode...
2015-10-19 16:30:55,046 INFO rtl_tcp host connection estabilished
127.0.0.1 - - [19/Oct/2015 16:31:12] "GET / HTTP/1.1" 200 -
[openwebrx-httpd] client 127.0.0.1#8aa134823b021d4229188686fd7f479b :: client added. Clients now: 1
127.0.0.1 - - [19/Oct/2015 16:31:12] "GET /sdr.js HTTP/1.1" 200 -
127.0.0.1 - - [19/Oct/2015 16:31:12] "GET /openwebrx.js HTTP/1.1" 200 -
127.0.0.1 - - [19/Oct/2015 16:31:12] "GET /openwebrx.css HTTP/1.1" 200 -
127.0.0.1 - - [19/Oct/2015 16:31:12] "GET / HTTP/1.1" 200 -
[openwebrx-httpd] client 127.0.0.1#22315c84e6367d13fd36a3c6c0860620 :: client added. Clients now: 2
127.0.0.1 - - [19/Oct/2015 16:31:12] "GET /favicon.ico HTTP/1.1" 200 -
127.0.0.1 - - [19/Oct/2015 16:31:12] "GET /sdr.js HTTP/1.1" 200 -
127.0.0.1 - - [19/Oct/2015 16:31:12] "GET /openwebrx.js HTTP/1.1" 200 -
127.0.0.1 - - [19/Oct/2015 16:31:12] "GET /openwebrx.css HTTP/1.1" 200 -
127.0.0.1 - - [19/Oct/2015 16:31:12] "GET /favicon.ico HTTP/1.1" 200 -
[openwebrx-dsp-plugin:csdr] Command = nc -v localhost 4951 | csdr convert_u8_f | csdr flowcontrol 3000000 10 | csdr shift_addition_cc --fifo /tmp/openwebrx_pipe_4317379184_shift | csdr fir_decimate_cc 22 0.0068178 HAMMING | csdr bandpass_fir_fft_cc --fifo /tmp/openwebrx_pipe_4317379184_bpf 0.0281615770483 HAMMING | csdr fmdemod_quadri_cf | csdr limit_ff | csdr fractional_decimator_ff 1.03065759637 | csdr deemphasis_nfm_ff 11025 | csdr fastagc_ff | csdr convert_f_i16 | csdr encode_ima_adpcm_i16_u8
fir_decimate_cc: taps_length = 587
found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif lo0
    src 127.0.0.1 port 56885
    dst 127.0.0.1 port 4951
    rank info not available
    TCP aux info available

2015-10-19 16:31:12,449 INFO client accepted: [email protected]:56885  users now: 2
csdr: fifo control mode on
function name given in argument 1 does not exist.

csdr: fifo control mode on
fractional_decimator_ff: window = HAMMING
fractional_decimator_ff: taps_length = 133
deemphasis_nfm_ff: invalid sample rate (this function works only with specific sample rates).

shift_addition_cc: reinitialized to -0
shift_addition_cc: reinitialized to -0
function name given in argument 1 does not exist.

Connection to localhost port 4951 [tcp/pwgwims] succeeded!
bandpass_fir_fft_cc: (fft_size = 512) = (taps_length = 143) + (input_size = 370) - 1
(overlap_length = 142) = taps_length - 1
bandpass_fir_fft_cc: filter initialized, low_cut = -0.35202, high_cut = 0.35202

Mehdi

Fedora 22 Support

python openwebrx.py 


OpenWebRX - Open Source SDR Web App for Everyone!  | for license see LICENSE file in the package
_________________________________________________________________________________________________

Author contact info:    Andras Retzler, HA7ILM <[email protected]>

[openwebrx-import] Found plugin: plugins.dsp.csdr.plugin
[openwebrx-main] Started rtl thread: rtl_sdr -s 250000 -f 146730000 -p 0 - | nc -vvl 127.0.0.1 8888
[openwebrx-main] Started rtl_mus.
Ncat: Version 6.47 ( http://nmap.org/ncat )
Ncat: bind to 127.0.0.1:8888: Address already in use. QUITTING.
Found 1 device(s):
0:  Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM
usb_claim_interface error -6
Failed to open rtlsdr device #0.

rtl_mus: Multi-User I/Q Data Server for RTL-SDR v0.22, made at HA5KFU Amateur Radio Club (http://ha5kfu.hu)
code by Andras Retzler, HA7ILM <[email protected]>
distributed under GNU GPL v3

2015-12-22 04:36:20,673 INFO Server is UP
client accepted!
2015-12-22 04:36:20,689 INFO Server listening on port: 4951
2015-12-22 04:36:20,690 INFO rtl_tcp host connection estabilished
[openwebrx-main] Starting watchdog threads.
[openwebrx-main] Starting spectrum thread.
[openwebrx-spectrum] Spectrum thread initialized successfully.
[openwebrx-dsp-plugin:csdr] Command = sleep 1; nc -v localhost 4951 | csdr convert_u8_f | csdr flowcontrol 3000000 10 | csdr fft_cc 4096 27777 | csdr logpower_cf -70 | csdr fft_exchange_sides_ff 4096 | csdr compress_fft_adpcm_f_u8 4096
[openwebrx-spectrum] Spectrum thread started.
[openwebrx-main] Starting HTTP server.
flowcontrol: flowcontrol_bufsize = 300000, flowcontrol_sleep = 100000
Ncat: Version 6.47 ( http://nmap.org/ncat )
Ncat: Connection refused.

I'm using Fedora 22 and the nmap provided netcat from the repos. I can open the page from a remote browser on the lan (as intended) but the connection refused occurs before connecting with a browser. When I open chrome, it states WebSocket has closed unexpectedly. Please reload the page.

Any suggestions on what to try? I have already attempted the nc -p\ncat edits to configure_webrx.py and the csdr/plugin.py.

Getting audio underruns

Hans, DL9RDZ has reported that they were getting audio underruns running OpenWebRX on a Raspberry Pi until they removed the csdr flowcontrol from the DSP chain at this line.
If someone has a similar problem, it is worth trying. I'll try to investigate.
(In fact, I'm getting audio underruns if I do that change. )

zoom_levels_count

Hi Andras,

I think the zoom_levels_count=5 in the openwebrx.js should more be like 20 instead of 5. I tested it and it makes it more smooth to zoom and easy to use and I find 5 steps makes it hard to use. Maybe there is also a way that makes it possible to access this variable through the config_webrx.py?

Hauke (ex DO5HHC - now DH4CK)

Problem with USRP

Hi,

can someone help me?
I would like to use Ettus B100 with OpenWebRx.

bildschirmfoto 2016-11-13 um 16 52 50

Thanks
Stephan

Problem in first set-up (no sound and no waterfall)

Hi
I've installed all the pre-requisites, disabled the kernel module and tested that "rtl_sdr - > /dev/null" actually works.
Python version: 2.7.3
I don't have any activity (sound or waterfall) in my browser!
Here's the output of "python openwebrx.py":

[openwebrx-import] Found plugin: plugins.dsp.csdr.plugin
[openwebrx-main] Started rtl thread: rtl_sdr -s 250000 -f 88000000 -p 0 - | nc -vvl 127.0.0.1 8888
[openwebrx-main] Started rtl_mus.
listening on [any] 32928 ...
Found 1 device(s):
  0:  Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM

rtl_mus: Multi-User I/Q Data Server for RTL-SDR v0.22, made at HA5KFU Amateur Radio Club (http://ha5kfu.hu)
    code by Andras Retzler, HA7ILM <[email protected]>
    distributed under GNU GPL v3

2015-10-16 15:02:53,564 INFO Server is UP
2015-10-16 15:02:53,568 INFO Server listening on port: 4951
2015-10-16 15:02:53,568 ERROR with rtl_tcp host connection: [Errno 111] Connection refused
Found Rafael Micro R820T tuner
Exact sample rate is: 250000.000414 Hz
[openwebrx-main] Starting watchdog threads.
[openwebrx-main] Starting spectrum thread.
[openwebrx-main] Starting HTTP server.
[openwebrx-spectrum] Spectrum thread initialized successfully.
[openwebrx-dsp-plugin:csdr] Command = sleep 1; nc -v localhost 4951 | csdr convert_u8_f | csdr flowcontrol 3000000 10 | csdr fft_cc 4096 27777 | csdr logpower_cf -70 | csdr fft_exchange_sides_ff 4096 | csdr compress_fft_adpcm_f_u8 4096
[openwebrx-spectrum] Spectrum thread started.
[R82XX] PLL not locked!
Sampling at 250000 S/s.
Tuned to 88000000 Hz.
Tuner gain set to automatic.
Reading samples in async mode...
flowcontrol: flowcontrol_bufsize = 300000, flowcontrol_sleep = 100000
2015-10-16 15:02:55,540 INFO client accepted: [email protected]:52586  users now: 1

I have also tried running with root, but there's no difference.

Mobile version website

Would be nice to have one - i.e. as in WebSDR. Full version is a bit laggy for a phone/tablet.

Hangs one or twice every day

Hi,

I'm trying to set up a public SDR for listening CB comms near Barcelona, Spain and help the local CB enthusiasts listening each other when the QRM is high (URL http://z-ha-dum.dyndns.org:8080). However, it hangs once or twice every day, no errors are given on the log. I tried on a Rasbberry Pi 3 running Raspbian and in a NUC 6I3 running Ubuntu 16.04. Same thing.

When this happens, new clients reach this in the OpenWebRX log: "WebSocket opened to ws://z-ha-dum.dyndns.org:8080/ws/", but they never see the "Web Audio API succesfully initialized, sample rate: 44100 sps" that appears when it's running ok. No audio and no waterfall.

So, any hints? Or maybe, is there any way I can increase the debug information / logging so we can properly locate the issue here?

By the way, our of despair, I'll just settle happily with a patch for a forced exit of OpenWebRX everytime this happens, I can have systemd restarting it as may times as it has to.

Best regards,
Daniel, EA3HRU.

cw tone

CW tone is very strange.It doesnt sound as it shoud be and have a lot splattering with stonger sigs.
Also its not possible to set frequency slider on waterfall to correct freq in CW. You have to set it like this ---------- | /-------------------------------
--------------| signal---------------------

it should be
---------------- | /----------------------
----------signal------------------------

Mouse-wheel?

I am running this on a Mac client. Macs don't have mouse wheels. How to change frequency?

Consider Affero GPL as a license

While "plain" GPL requires changes to the source to be available if someone distributes the software as a binary (which would be weird anyway with a Python project like this), it does allow people to change the software and run it as a service but not share these modifications. Affero GPL fixes this, and should match a project like this more closely, like searx.

FM squelch

Hello.
Thanks for websdr opensource alternative.
Its possible to add squelch function? Looks like only this feature needed for everyday VHF/UHF FM use :)
Sorry for my english, R0AFJ, 73!

Support iOS

Enhancement suggestion, support iOS as a browser.

Thanks for the good work.

TypeError: Cannot set property 'offset_frequency' of undefined

When clicking on the gray bar for setting the frequency, I'm getting this message:

TypeError: Cannot set property 'offset_frequency' of undefined
#4 http://172.17.0.26:8073/openwebrx.js:478:34
#3 http://172.17.0.26:8073/openwebrx.js:478:34 demodulator_set_offset_frequency()
#2 http://172.17.0.26:8073/openwebrx.js:557:57 scale_canvas_end_drag()
#1 http://172.17.0.26:8073/openwebrx.js:562:27 HTMLCanvasElement.scale_canvas_mouseup()

Options | Contribute

Scrollspeed

Hi András.

Changing the speed of waterfall scrolling would be cool, too.

Time ticks

Hi András.

Implementing time ticks on waterfall would be another cool thing. Tried it. Tried to put text on the canvases. But no real success until t'day.

Poor reception?

Hi

I'm running this on a raspberry pi 2 (have also tried on 1) with raspbian and an rtl-sdr dongle. When running on my laptop with gqrx the dongle works fine, but when running on the pi with openwebrx I get the waterfall and noise, but no reception. Can't even hear local radio stations. Any idea why?

http server listen ipv6 address

Now http server listen only ipv4 socket.

to listen both ipv4 and ipv6 need this patch to openwebrx.py:

-class MultiThreadHTTPServer(ThreadingMixIn, HTTPServer):
+class HTTPServerV6(HTTPServer):
+       address_family = socket.AF_INET6
+
+class MultiThreadHTTPServer(ThreadingMixIn, HTTPServerV6):

but it can cause problems on systems with disabled ipv6.
maybe need make this optional but enabled by default

No waterfall - no audio

Trying out openwebsdr with my single channel AFEDRI-SDR. Plan is to locate at summerhouse, ie location with low rf noise. Software (server) is running on RaspberryPi3. Startupsequence including connection to Firefox via local home net is as follows;

pi@SdrPi:~/openwebrx $ bash start_afedri.sh
sdr_commander v.1.23
SDR IP=10.0.0.217:50000
SO_KEEPALIVE is OFF
The new sample rate was set in SDR: 1536000 (Hz)
ACK rprt=28, cmd=8
RF gain 17dB => 72
ACK rprt=28, cmd=48
The new multichannel mode is Single Channel
sdr_commander v.1.23
SDR IP=10.0.0.217:50000
SO_KEEPALIVE is OFF
RX Frequency 3518000 (Hz) for the channel 0

OpenWebRX - Open Source SDR Web App for Everyone! | for license see LICENSE fil
e in the package



Author contact info: Andras Retzler, HA7ILM [email protected]

[openwebrx-main] Configuration script not specified. I will use: "config_webrx.p
y"
[openwebrx-import] Found plugin: plugins.dsp.csdr.plugin
Ncat: Version 6.47 ( http://nmap.org/ncat )
[openwebrx-main] Started rtl_thread: ./sdr_split -i10.0.0.217 -u50000 -O -s19200
0 -f3515000 | nc -vvl -p 8888| ncat -4l 4951 -k --send-only --allow 127.0.0.1
[openwebrx-main] Waiting for I/Q server to start...
Listening on [0.0.0.0](family 0, port 8888)
SDR Split 1.12 will use next parameters
Starting in network mode SDR IP=10.0.0.217:50000
1 RX IQ channels data stream.
Split to 1 channels...
Playback device is stdin
Channel sample rate 192000
SO_KEEPALIVE is OFF
UDP socket receive buffer size 262144
Any address on port 50000
[openwebrx-main] I/Q server started.
[openwebrx-main] Starting watchdog threads.
[openwebrx-main] Starting spectrum thread.
[openwebrx-spectrum] Spectrum thread initialized successfully.
[openwebrx-dsp-plugin:csdr] Command = ncat -v 127.0.0.1 4951 | csdr convert_s16_
f | csdr fft_cc 4096 21333 | csdr logpower_cf -70 | csdr fft_exchange_sides_ff 4
096 | csdr compress_fft_adpcm_f_u8 4096
[openwebrx-main] Starting HTTP server.
[openwebrx-spectrum] Spectrum thread started.
Ncat: Version 6.47 ( http://nmap.org/ncat )
Ncat: Connected to 127.0.0.1:4951.
10.0.0.189 - - [26/Mar/2016 10:09:03] "GET / HTTP/1.1" 200 -
[openwebrx-httpd] client 10.0.0.189#4d2ccf3aea6a4102e4978c766f5113bc :: client a
dded. Clients now: 1
10.0.0.189 - - [26/Mar/2016 10:09:04] "GET /sdr.js HTTP/1.1" 200 -
10.0.0.189 - - [26/Mar/2016 10:09:04] "GET /openwebrx.js HTTP/1.1" 200 -
10.0.0.189 - - [26/Mar/2016 10:09:04] "GET /openwebrx.css HTTP/1.1" 200 -
10.0.0.189 - - [26/Mar/2016 10:09:04] "GET /favicon.ico HTTP/1.1" 200 -
10.0.0.189 - - [26/Mar/2016 10:09:04] "GET /favicon.ico HTTP/1.1" 200 -
10.0.0.189 - - [26/Mar/2016 10:09:05] "GET /favicon.ico HTTP/1.1" 200 -
10.0.0.189 - - [26/Mar/2016 10:09:05] "GET /favicon.ico HTTP/1.1" 200 -
[openwebrx-httpd:ws,0] command: SET output_rate=12000 action=start
[openwebrx-dsp-plugin:csdr] Command = ncat -v 127.0.0.1 4951 | csdr convert_s16_
f | csdr shift_addition_cc --fifo /tmp/openwebrx_pipe_1986677216_shift | csdr fi
r_decimate_cc 15 0.01 HAMMING | csdr bandpass_fir_fft_cc --fifo /tmp/openwebrx_p
ipe_1986677216_bpf 0.025 HAMMING | csdr squelch_and_smeter_cc --fifo /tmp/openwe
brx_pipe_1986677216_squelch --outfifo /tmp/openwebrx_pipe_1986677216_smeter 5 1
| csdr fmdemod_quadri_cf | csdr limit_ff | csdr fractional_decimator_ff 1.066666
66667 | csdr deemphasis_nfm_ff 11025 | csdr fastagc_ff 1024 | csdr convert_f_i16
| csdr encode_ima_adpcm_i16_u8
fir_decimate_cc: taps_length = 401
Ncat: Version 6.47 ( http://nmap.org/ncat )
taps_length = 401
padded_taps_length = 408
taps = 145e018
taps = 145e020
fractional_decimator_ff: window = HAMMING
fractional_decimator_ff: taps_length = 133
csdr: fifo control mode on
csdr: fifo control mode on
csdr: fifo control mode on
squelch_and_power_cc: initial squelch level is 0
Ncat: Connected to 127.0.0.1:4951.
bandpass_fir_fft_cc: (fft_size = 512) = (taps_length = 159) + (input_size = 354)

  • 1
    (overlap_length = 158) = taps_length - 1
    shift_addition_cc: reinitialized to -0
    bandpass_fir_fft_cc: filter initialized, low_cut = -0.3125, high_cut = 0.3125

I fail to see any errors in the above, still the waterfall is empty and no audio, only the frequency scale, rx info, status, logs etc is shown.

The JS console shows the following;
Unknown property '-moz-border-radius'. Declaration dropped. openwebrx.css:509:19
Unknown property '-moz-border-radius'. Declaration dropped. openwebrx.css:530:19
Error in parsing value for 'background'. Declaration dropped. openwebrx.css:535:12
Unknown property 'user-select'. Declaration dropped. openwebrx.css:537:12
Unknown property 'user-select'. Declaration dropped. openwebrx.css:636:12
audio_calculate_resampling() :: 4, 12000 openwebrx.js:1111:2
Error in parsing value for 'max-height'. Declaration dropped. 10.0.0.113:8073
Error in parsing value for 'height'. Declaration dropped.

Only errors seems related to layout of page. Client log on page itself shows;
OpenWebRX client log
Author: András Retzler, HA7ILM
You can support OpenWebRX development via PayPal!
WebSocket opened to ws://10.0.0.113:8073/ws/
Acknowledged WebSocket connection: CLIENT DE SERVER openwebrx.py
Audio stream is compressed.
FFT stream is compressed.

Any suggestions are welcome. Would love to get this software to run. Need access to a low noise RX site. Home QTH is to noisy for serious DX work on 80 m.

73 de Olaf - LA3RK

Tuning with mouse wheel

Turning the mouse wheel while it is over the frequency display should change the frequency.

"Disable waterfall" option

Hello,
Would be nice to have this option as it could reduce CPU/network usage a bit.
Btw - great piece of software!

Waterfall keeps accumulating, propose a limit on the scroll-back

Waterfall keeps accumulating, propose a limit on the scroll-back.

It seems that waterfall images are only added to the page, this is nice such that you get a nice scroll-able scroll-back, but I think a limit, preferable settable in the radio settings or similar should be implemented not to get out of memory after long while running the interface.

Labels over the frequency scale

We should be able to label some frequencies.
Clicking on the label should set frequency and modulation mode.

  • The list of labels should be contained in a separate file.

Cannot Email Developer

I have been trying to send an email to [email protected] but I keep getting the email returned as...

SMTP error from remote server after RCPT command:
host: mail.sdr.hu
Administrative prohibition

Please fix this. Get a free Outlook.com email account or something please.

"Illegal instruction (core dumped)" problem

OpenWebRX - Open Source SDR Web App for Everyone!  | for license see LICENSE file in the package
_________________________________________________________________________________________________

Author contact info:    Andras Retzler, HA7ILM <[email protected]>

[openwebrx-import] Found plugin: plugins.dsp.csdr.plugin
[openwebrx-main] Started rtl thread: rtl_sdr -s 250000 -f 145525000 -p 0 - | nc -vvl 127.0.0.1 8888
[openwebrx-main] Started rtl_mus.
Listening on [127.0.0.1] (family 0, port 8888)
Found 1 device(s):
  0:  Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM

rtl_mus: Multi-User I/Q Data Server for RTL-SDR v0.22, made at HA5KFU Amateur Radio Club (http://ha5kfu.hu)
    code by Andras Retzler, HA7ILM <[email protected]>
    distributed under GNU GPL v3

2016-02-03 22:52:04,689 INFO Server is UP
2016-02-03 22:52:04,692 INFO Server listening on port: 4951
Connection from [127.0.0.1] port 8888 [tcp/*] accepted (family 2, sport 37714)
Found Rafael Micro R820T tuner
Exact sample rate is: 250000.000414 Hz
[R82XX] PLL not locked!
Sampling at 250000 S/s.
Tuned to 145525000 Hz.
Tuner gain set to automatic.
Reading samples in async mode...
[openwebrx-main] Starting watchdog threads.
[openwebrx-main] Starting spectrum thread.
[openwebrx-main] Starting HTTP server.
 [openwebrx-spectrum] Spectrum thread initialized successfully.
[openwebrx-dsp-plugin:csdr] Command = sleep 1; nc -v localhost 4951 | csdr convert_u8_f | csdr flowcontrol 3000000 10 | csdr fft_cc 4096 27777 | csdr logpower_cf -70 | csdr fft_exchange_sides_ff 4096 | csdr compress_fft_adpcm_f_u8 4096
[openwebrx-spectrum] Spectrum thread started.
2016-02-03 22:52:05,783 INFO rtl_tcp host connection estabilished
2016-02-03 22:52:06,673 INFO client accepted: [email protected]:56654  users now: 1
Connection to localhost 4951 port [tcp/*] succeeded!
Illegal instruction (core dumped)
Illegal instruction (core dumped)
2016-02-03 22:52:07,107 INFO client disconnected: [email protected]
37.229.155.161 - - [03/Feb/2016 22:52:10] "GET / HTTP/1.1" 200 -
[openwebrx-httpd] client 37.229.155.161#4d004fd79a71ee9dfdc168280757680a :: client added. Clients now: 1
37.229.155.161 - - [03/Feb/2016 22:52:10] "GET /openwebrx.css HTTP/1.1" 200 -
37.229.155.161 - - [03/Feb/2016 22:52:10] "GET /sdr.js HTTP/1.1" 200 -
37.229.155.161 - - [03/Feb/2016 22:52:10] "GET /openwebrx.js HTTP/1.1" 200 -
37.229.155.161 - - [03/Feb/2016 22:52:10] "GET /gfx/openwebrx-top-photo.jpg HTTP/1.1" 200 -
37.229.155.161 - - [03/Feb/2016 22:52:10] "GET /gfx/openwebrx-top-logo.png HTTP/1.1" 200 -
37.229.155.161 - - [03/Feb/2016 22:52:11] "GET /gfx/font-expletus-sans/ExpletusSans-Medium.ttf HTTP/1.1" 200 -
37.229.155.161 - - [03/Feb/2016 22:52:11] "GET /gfx/openwebrx-ha5kfu-top-logo.png HTTP/1.1" 200 -
37.229.155.161 - - [03/Feb/2016 22:52:11] "GET /gfx/openwebrx-rx-details-arrow-up.png HTTP/1.1" 200 -
37.229.155.161 - - [03/Feb/2016 22:52:11] "GET /gfx/openwebrx-avatar.png HTTP/1.1" 200 -
37.229.155.161 - - [03/Feb/2016 22:52:11] "GET /gfx/openwebrx-avatar-background.png HTTP/1.1" 200 -
37.229.155.161 - - [03/Feb/2016 22:52:11] "GET /gfx/openwebrx-rx-details-arrow.png HTTP/1.1" 200 -
37.229.155.161 - - [03/Feb/2016 22:52:11] "GET /gfx/openwebrx-background-cool-blue.png HTTP/1.1" 200 -
37.229.155.161 - - [03/Feb/2016 22:52:11] "GET /gfx/openwebrx-scale-background.png HTTP/1.1" 200 -
37.229.155.161 - - [03/Feb/2016 22:52:11] "GET /gfx/openwebrx-panel-log.png HTTP/1.1" 200 -
37.229.155.161 - - [03/Feb/2016 22:52:11] "GET /gfx/openwebrx-panel-receiver.png HTTP/1.1" 200 -
37.229.155.161 - - [03/Feb/2016 22:52:11] "GET /gfx/openwebrx-panel-status.png HTTP/1.1" 200 -
37.229.155.161 - - [03/Feb/2016 22:52:11] "GET /favicon.ico HTTP/1.1" 200 -
[openwebrx-dsp-plugin:csdr] Command = nc -v localhost 4951 | csdr convert_u8_f | csdr flowcontrol 3000000 10 | csdr shift_addition_cc --fifo /tmp/openwebrx_pipe_140350216572584_shift | csdr fir_decimate_cc 22 0.0068178 HAMMING | csdr bandpass_fir_fft_cc --fifo /tmp/openwebrx_pipe_140350216572584_bpf 0.0281615770483 HAMMING | csdr fmdemod_quadri_cf | csdr limit_ff | csdr fractional_decimator_ff 1.03065759637 | csdr deemphasis_nfm_ff 11025 | csdr fastagc_ff | csdr convert_f_i16 | csdr encode_ima_adpcm_i16_u8
csdr: fifo control mode on
fir_decimate_cc: taps_length = 587
csdr: fifo control mode on
fractional_decimator_ff: window = HAMMING
fractional_decimator_ff: taps_length = 133
shift_addition_cc: reinitialized to -0
[openwebrx-spectrum] client spectrum queue full, closing it.
[openwebrx-httpd] client 37.229.155.161#4d004fd79a71ee9dfdc168280757680a :: client being closed.
[openwebrx-httpd:ws] client closed by other thread
[openwebrx-dsp-plugin:csdr] stop() :: unlink failed: /tmp/openwebrx_pipe_140350216572584_bpf
[openwebrx-dsp-plugin:csdr] stop() :: unlink failed: /tmp/openwebrx_pipe_140350216572584_bpf
[openwebrx-httpd] client cannot be closed:  <class '__main__.ClientNotFoundException'>
  File "./openwebrx.py", line 448, in do_GET
    id_to_close=get_client_by_id(myclient.id,False)
  File "./openwebrx.py", line 251, in get_client_by_id
    raise ClientNotFoundException

I'm using Ubuntu 14.04 LTS. For installation used this guide. When I open chrome, it states WebSocket has closed unexpectedly. Please reload the page.. What I can to do? I have already attempted the nc -p\ncat edits to configure_webrx.py. Thanks.

recording?

Hi and thanks for this software.

I am wondering if there are capabilities and plans for making recordings using this system. The WedSDR software at U Twente, for example, has this:

screen shot 2016-09-27 at 10 26 33 am

screen shot 2016-09-27 at 10 26 41 am

a simple one-button recorder that stores an audio file on the system for download.

I know that there are various ways to enable recording by doing a virtual patch of the received audio into recording software, but thought it would be worth raising the question for a built-in feature.

thanks again

Receiver not listed on SDR.hu

Hi i've tried on your openwebrx project and it's awesome. I've registered my receiver but got some problems when i tried to list my receiver on sdr.hu, my receiver cannot reached from public internet.
Here's my settings

On config:
web_port=8088
server_hostname="222.124.124.12" # If this contains an incorrect value, the web UI may freeze on load (it can't open websocket)
max_clients=5

==== sdr.hu listing ====

If you want your ham receiver to be listed publicly on sdr.hu, then take the following steps:

1. Register at: http://sdr.hu/register

2. You will get an unique key by email. Copy it and paste here:

sdrhu_key = "copied like email"

3. Set this setting to True to enable listing:

sdrhu_public_listing = True

On terminal:
`
[openwebrx-main] Configuration script not specified. I will use: "config_webrx.py"
[openwebrx-import] Found plugin: plugins.dsp.csdr.plugin
Ncat: Version 6.40 ( http://nmap.org/ncat )
[openwebrx-main] Started rtl_thread: rtl_sdr -s 2400000 -f 93700000 -p 0 -g 10 -| ncat -4l 4951 -k --send-only --allow 127.0.0.1
[openwebrx-main] Waiting for I/Q server to start...
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM
[openwebrx-main] I/Q server started.
[openwebrx-main] Starting watchdog threads.
[openwebrx-main] Starting spectrum thread.
[openwebrx-spectrum] Spectrum thread initialized successfully.
[openwebrx-dsp-plugin:csdr] Command = ncat -v 127.0.0.1 4951 | csdr convert_u8_f | csdr fft_cc 8192 5673 | csdr logaveragepower_cf -70 8192 47 | csdr fft_exchange_sides_ff 8192 | csdr compress_fft_adpcm_f_u8 8192
[openwebrx-main] Starting sdr.hu update thread...
[openwebrx-main] Starting HTTP server.
[openwebrx-spectrum] Spectrum thread started.
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connected to 127.0.0.1:4951.
Found Rafael Micro R820T tuner
[R82XX] PLL not locked!
Sampling at 2400000 S/s.
Tuned to 93700000 Hz.
Tuner gain set to 8.70 dB.
Reading samples in async mode...
[openwebrx-sdrhu] Update succeeded! (Your receiver is soon getting listed on sdr.hu!)`

but after 10-15minutes still not listed on sdr.hu , i try to check http://222.124.124.12:8088/status and it cannot reached from public internet.

where is wrong with my setup? thanks for your help.

Please provide a release

I'm looking at packaging your software for Debian. We like to base our packages on releases of the software and then track new releases automatically so we know when we need to update our packages.

Could you please tag a release or make a release through the GitHub releases system when you feel your software has reached a stable state?

I'm happy enough with the state of the software currently to make a package based on the latest Git commit but I would prefer to have a release before uploading this to the Debian archives.

(I'm also looking at packaging csdr as a dependency of this.)

Hearing audio from across the spectrum

I'm using an RTL-SDR v3 dongle in Direct Sampling mode and tuned to an HF frequency. I hear the signal of interest but I also get audio from signals across the band I'm tuned to!

No Audio on OS X

Hi
I'm trying to run the latest openwebrx with RTL-SDR and I've no errors and I can see the spectrum, but no audio!
The only audio-related log in Chrome's developer tools is this:

audio_calculate_resampling() :: 4, 11025

Also here's the first lines of log when I run openwebrx:

[openwebrx-main] Configuration script not specified. I will use: "config_webrx.py"
[openwebrx-import] Found plugin: plugins.dsp.csdr.plugin
Ncat: Version 7.12 ( https://nmap.org/ncat )
[openwebrx-main] Started rtl_thread: rtl_sdr -s 1800000 -f 88000000 -p 0 -g 5 -| ncat -4l 4951 -k --send-only --allow 127.0.0.1
[openwebrx-main] Waiting for I/Q server to start...
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001
Using device 0: Generic RTL2832U OEM
[openwebrx-main] I/Q server started.
[openwebrx-main] Starting watchdog threads.
[openwebrx-main] Starting spectrum thread.
[openwebrx-spectrum] Spectrum thread initialized successfully.
[openwebrx-dsp-plugin:csdr] Command = ncat -v 127.0.0.1 4951 | csdr convert_u8_f | csdr fft_cc 4096 200000 | csdr logpower_cf -70 | csdr fft_exchange_sides_ff 4096 | csdr compress_fft_adpcm_f_u8 4096
[openwebrx-spectrum] Spectrum thread started.
Ncat: Version 7.12 ( https://nmap.org/ncat )
Ncat: Connected to 127.0.0.1:4951.
Found Rafael Micro R820T tuner
Sampling at 1800000 S/s.
Tuned to 88000000 Hz.
Tuner gain set to 3.70 dB.
Reading samples in async mode...
[openwebrx-main] Starting HTTP server.

I've tried changing "audio_compression" to "none" and also bigger values for "client_audio_buffer_size" without success!

When I close my browser, these errors are shown in the terminal:

[openwebrx-httpd] error in dsp.stop()
[openwebrx-httpd] client 127.0.0.1#20559ac5c768cd7410e1a4d1bdd53dc1 :: client being closed.
[openwebrx] close_client dsp.stop() :: error - <type 'exceptions.AttributeError'> dsp_plugin instance has no attribute 'process'
File "openwebrx.py", line 378, in close_client
clients[i].dsp.stop()
File "/Users/mehdi/Documents/Radio_Electronics/Source/openwebrx/plugins/dsp/csdr/plugin.py", line 215, in stop
os.killpg(os.getpgid(self.process.pid), signal.SIGTERM)
Exception happened during processing of request from ('127.0.0.1', 59977)
Traceback (most recent call last):
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 599, in process_request_thread
self.finish_request(request, client_address)
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 334, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 657, in init
self.finish()
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 716, in finish
self.wfile.close()
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 283, in close
self.flush()
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 307, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe

My system info:
OS X 10.11.6
Chrome 52.0.2743.82

Any ideas?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.